]> nmode's Git Repositories - signal-cli/commitdiff
Refactor manager lib package structure
authorAsamK <asamk@gmx.de>
Sun, 21 May 2023 20:40:30 +0000 (22:40 +0200)
committerAsamK <asamk@gmx.de>
Tue, 23 May 2023 17:34:13 +0000 (19:34 +0200)
97 files changed:
lib/src/main/java/org/asamk/signal/manager/Manager.java
lib/src/main/java/org/asamk/signal/manager/ManagerLogger.java
lib/src/main/java/org/asamk/signal/manager/Settings.java
lib/src/main/java/org/asamk/signal/manager/SignalAccountFiles.java
lib/src/main/java/org/asamk/signal/manager/actions/SendGroupInfoAction.java
lib/src/main/java/org/asamk/signal/manager/actions/SendGroupInfoRequestAction.java
lib/src/main/java/org/asamk/signal/manager/actions/SendRetryMessageRequestAction.java
lib/src/main/java/org/asamk/signal/manager/api/Contact.java [moved from lib/src/main/java/org/asamk/signal/manager/storage/recipients/Contact.java with 98% similarity]
lib/src/main/java/org/asamk/signal/manager/api/Group.java
lib/src/main/java/org/asamk/signal/manager/api/GroupId.java [moved from lib/src/main/java/org/asamk/signal/manager/groups/GroupId.java with 97% similarity]
lib/src/main/java/org/asamk/signal/manager/api/GroupIdFormatException.java [moved from lib/src/main/java/org/asamk/signal/manager/groups/GroupIdFormatException.java with 85% similarity]
lib/src/main/java/org/asamk/signal/manager/api/GroupIdV1.java [moved from lib/src/main/java/org/asamk/signal/manager/groups/GroupIdV1.java with 91% similarity]
lib/src/main/java/org/asamk/signal/manager/api/GroupIdV2.java [moved from lib/src/main/java/org/asamk/signal/manager/groups/GroupIdV2.java with 86% similarity]
lib/src/main/java/org/asamk/signal/manager/api/GroupInviteLinkUrl.java [moved from lib/src/main/java/org/asamk/signal/manager/groups/GroupInviteLinkUrl.java with 98% similarity]
lib/src/main/java/org/asamk/signal/manager/api/GroupLinkState.java [moved from lib/src/main/java/org/asamk/signal/manager/groups/GroupLinkState.java with 67% similarity]
lib/src/main/java/org/asamk/signal/manager/api/GroupNotFoundException.java [moved from lib/src/main/java/org/asamk/signal/manager/groups/GroupNotFoundException.java with 81% similarity]
lib/src/main/java/org/asamk/signal/manager/api/GroupPermission.java [moved from lib/src/main/java/org/asamk/signal/manager/groups/GroupPermission.java with 62% similarity]
lib/src/main/java/org/asamk/signal/manager/api/GroupSendingNotAllowedException.java [moved from lib/src/main/java/org/asamk/signal/manager/groups/GroupSendingNotAllowedException.java with 86% similarity]
lib/src/main/java/org/asamk/signal/manager/api/LastGroupAdminException.java [moved from lib/src/main/java/org/asamk/signal/manager/groups/LastGroupAdminException.java with 85% similarity]
lib/src/main/java/org/asamk/signal/manager/api/MessageEnvelope.java
lib/src/main/java/org/asamk/signal/manager/api/NotAGroupMemberException.java [moved from lib/src/main/java/org/asamk/signal/manager/groups/NotAGroupMemberException.java with 85% similarity]
lib/src/main/java/org/asamk/signal/manager/api/Profile.java [moved from lib/src/main/java/org/asamk/signal/manager/storage/recipients/Profile.java with 97% similarity]
lib/src/main/java/org/asamk/signal/manager/api/Recipient.java
lib/src/main/java/org/asamk/signal/manager/api/RecipientIdentifier.java
lib/src/main/java/org/asamk/signal/manager/api/ServiceEnvironment.java [moved from lib/src/main/java/org/asamk/signal/manager/config/ServiceEnvironment.java with 59% similarity]
lib/src/main/java/org/asamk/signal/manager/api/TrustNewIdentity.java [moved from lib/src/main/java/org/asamk/signal/manager/storage/identities/TrustNewIdentity.java with 58% similarity]
lib/src/main/java/org/asamk/signal/manager/api/UpdateGroup.java
lib/src/main/java/org/asamk/signal/manager/config/ServiceConfig.java
lib/src/main/java/org/asamk/signal/manager/config/ServiceEnvironmentConfig.java
lib/src/main/java/org/asamk/signal/manager/groups/GroupUtils.java
lib/src/main/java/org/asamk/signal/manager/helper/AccountHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/AttachmentHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/ContactHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/Context.java
lib/src/main/java/org/asamk/signal/manager/helper/GroupHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/GroupV2Helper.java
lib/src/main/java/org/asamk/signal/manager/helper/IncomingMessageHandler.java
lib/src/main/java/org/asamk/signal/manager/helper/PreKeyHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/ProfileHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/ReceiveHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/RecipientHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/SendHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/StickerHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/StorageHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/SyncHelper.java
lib/src/main/java/org/asamk/signal/manager/helper/UnidentifiedAccessHelper.java
lib/src/main/java/org/asamk/signal/manager/internal/AccountFileUpdaterImpl.java [moved from lib/src/main/java/org/asamk/signal/manager/AccountFileUpdaterImpl.java with 86% similarity]
lib/src/main/java/org/asamk/signal/manager/internal/DeviceLinkInfo.java [moved from lib/src/main/java/org/asamk/signal/manager/DeviceLinkInfo.java with 98% similarity]
lib/src/main/java/org/asamk/signal/manager/internal/JobExecutor.java [moved from lib/src/main/java/org/asamk/signal/manager/JobExecutor.java with 87% similarity]
lib/src/main/java/org/asamk/signal/manager/internal/LibSignalLogger.java [moved from lib/src/main/java/org/asamk/signal/manager/LibSignalLogger.java with 92% similarity]
lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java [moved from lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java with 98% similarity]
lib/src/main/java/org/asamk/signal/manager/internal/MultiAccountManagerImpl.java [moved from lib/src/main/java/org/asamk/signal/manager/MultiAccountManagerImpl.java with 91% similarity]
lib/src/main/java/org/asamk/signal/manager/internal/PathConfig.java [moved from lib/src/main/java/org/asamk/signal/manager/PathConfig.java with 71% similarity]
lib/src/main/java/org/asamk/signal/manager/internal/ProvisioningManagerImpl.java [moved from lib/src/main/java/org/asamk/signal/manager/ProvisioningManagerImpl.java with 97% similarity]
lib/src/main/java/org/asamk/signal/manager/internal/RegistrationManagerImpl.java [moved from lib/src/main/java/org/asamk/signal/manager/RegistrationManagerImpl.java with 97% similarity]
lib/src/main/java/org/asamk/signal/manager/internal/SignalDependencies.java [moved from lib/src/main/java/org/asamk/signal/manager/SignalDependencies.java with 99% similarity]
lib/src/main/java/org/asamk/signal/manager/internal/SignalWebSocketHealthMonitor.java [moved from lib/src/main/java/org/asamk/signal/manager/SignalWebSocketHealthMonitor.java with 99% similarity]
lib/src/main/java/org/asamk/signal/manager/storage/AttachmentStore.java [moved from lib/src/main/java/org/asamk/signal/manager/AttachmentStore.java with 98% similarity]
lib/src/main/java/org/asamk/signal/manager/storage/AvatarStore.java [moved from lib/src/main/java/org/asamk/signal/manager/AvatarStore.java with 97% similarity]
lib/src/main/java/org/asamk/signal/manager/storage/SignalAccount.java
lib/src/main/java/org/asamk/signal/manager/storage/accounts/AccountsStore.java
lib/src/main/java/org/asamk/signal/manager/storage/contacts/ContactsStore.java
lib/src/main/java/org/asamk/signal/manager/storage/groups/GroupInfo.java
lib/src/main/java/org/asamk/signal/manager/storage/groups/GroupInfoV1.java
lib/src/main/java/org/asamk/signal/manager/storage/groups/GroupInfoV2.java
lib/src/main/java/org/asamk/signal/manager/storage/groups/GroupStore.java
lib/src/main/java/org/asamk/signal/manager/storage/groups/LegacyGroupStore.java
lib/src/main/java/org/asamk/signal/manager/storage/identities/IdentityKeyStore.java
lib/src/main/java/org/asamk/signal/manager/storage/profiles/ProfileStore.java
lib/src/main/java/org/asamk/signal/manager/storage/recipients/LegacyRecipientStore2.java
lib/src/main/java/org/asamk/signal/manager/storage/recipients/Recipient.java
lib/src/main/java/org/asamk/signal/manager/storage/recipients/RecipientStore.java
lib/src/main/java/org/asamk/signal/manager/storage/sendLog/MessageSendLogEntry.java
lib/src/main/java/org/asamk/signal/manager/storage/sendLog/MessageSendLogStore.java
lib/src/main/java/org/asamk/signal/manager/util/ProfileUtils.java
src/main/java/org/asamk/signal/App.java
src/main/java/org/asamk/signal/ReceiveMessageHandler.java
src/main/java/org/asamk/signal/commands/BlockCommand.java
src/main/java/org/asamk/signal/commands/JoinGroupCommand.java
src/main/java/org/asamk/signal/commands/ListContactsCommand.java
src/main/java/org/asamk/signal/commands/QuitGroupCommand.java
src/main/java/org/asamk/signal/commands/RemoteDeleteCommand.java
src/main/java/org/asamk/signal/commands/SendCommand.java
src/main/java/org/asamk/signal/commands/SendReactionCommand.java
src/main/java/org/asamk/signal/commands/SendTypingCommand.java
src/main/java/org/asamk/signal/commands/UnblockCommand.java
src/main/java/org/asamk/signal/commands/UpdateGroupCommand.java
src/main/java/org/asamk/signal/dbus/DbusManagerImpl.java
src/main/java/org/asamk/signal/dbus/DbusReceiveMessageHandler.java
src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java
src/main/java/org/asamk/signal/http/HttpServerHandler.java
src/main/java/org/asamk/signal/json/JsonSendMessageResult.java
src/main/java/org/asamk/signal/json/JsonStoryMessage.java
src/main/java/org/asamk/signal/json/JsonSyncMessage.java
src/main/java/org/asamk/signal/json/JsonTypingMessage.java
src/main/java/org/asamk/signal/util/CommandUtil.java
src/main/java/org/asamk/signal/util/Util.java

index 6a5e43f5d95758af3cea16bfa7aa64b64c25239e..2e23564ba703f1e3b89eb86c359eb6d8a2fd6a06 100644 (file)
@@ -5,13 +5,19 @@ import org.asamk.signal.manager.api.AttachmentInvalidException;
 import org.asamk.signal.manager.api.Configuration;
 import org.asamk.signal.manager.api.Device;
 import org.asamk.signal.manager.api.Group;
+import org.asamk.signal.manager.api.GroupId;
+import org.asamk.signal.manager.api.GroupInviteLinkUrl;
+import org.asamk.signal.manager.api.GroupNotFoundException;
+import org.asamk.signal.manager.api.GroupSendingNotAllowedException;
 import org.asamk.signal.manager.api.Identity;
 import org.asamk.signal.manager.api.InactiveGroupLinkException;
 import org.asamk.signal.manager.api.InvalidDeviceLinkException;
 import org.asamk.signal.manager.api.InvalidStickerException;
 import org.asamk.signal.manager.api.InvalidUsernameException;
+import org.asamk.signal.manager.api.LastGroupAdminException;
 import org.asamk.signal.manager.api.Message;
 import org.asamk.signal.manager.api.MessageEnvelope;
+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;
@@ -28,12 +34,8 @@ import org.asamk.signal.manager.api.UnregisteredRecipientException;
 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.groups.GroupId;
-import org.asamk.signal.manager.groups.GroupInviteLinkUrl;
-import org.asamk.signal.manager.groups.GroupNotFoundException;
-import org.asamk.signal.manager.groups.GroupSendingNotAllowedException;
-import org.asamk.signal.manager.groups.LastGroupAdminException;
-import org.asamk.signal.manager.groups.NotAGroupMemberException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.whispersystems.signalservice.api.util.PhoneNumberFormatter;
 
 import java.io.Closeable;
@@ -54,6 +56,21 @@ public interface Manager extends Closeable {
         return PhoneNumberFormatter.isValidNumber(e164Number, countryCode);
     }
 
+    static boolean isSignalClientAvailable() {
+        final Logger logger = LoggerFactory.getLogger(Manager.class);
+        try {
+            try {
+                org.signal.libsignal.internal.Native.UuidCiphertext_CheckValidContents(new byte[0]);
+            } catch (Exception e) {
+                logger.trace("Expected exception when checking libsignal-client: {}", e.getMessage());
+            }
+            return true;
+        } catch (UnsatisfiedLinkError e) {
+            logger.warn("Failed to call libsignal-client: {}", e.getMessage());
+            return false;
+        }
+    }
+
     String getSelfNumber();
 
     /**
index e5dc2c0d7fcea810a2a389d1521f2cd8f7490154..c8437882dde71fb4b5a990f674c025c46a384c06 100644 (file)
@@ -1,5 +1,7 @@
 package org.asamk.signal.manager;
 
+import org.asamk.signal.manager.internal.LibSignalLogger;
+
 public class ManagerLogger {
 
     public static void initLogger() {
index e4f4554b419e291cfa65dc3b1e4d53193428fb95..878545141d9bdc59372636aeb5bc3c35d55f747e 100644 (file)
@@ -1,6 +1,6 @@
 package org.asamk.signal.manager;
 
-import org.asamk.signal.manager.storage.identities.TrustNewIdentity;
+import org.asamk.signal.manager.api.TrustNewIdentity;
 
 public record Settings(TrustNewIdentity trustNewIdentity, boolean disableMessageSendLog) {
 
index 12eb3d999defad585aebf5ebb70f7931c8b52673..da8a3f3a837bf5ff32696d9da1e833e63c07f7c5 100644 (file)
@@ -2,9 +2,15 @@ package org.asamk.signal.manager;
 
 import org.asamk.signal.manager.api.AccountCheckException;
 import org.asamk.signal.manager.api.NotRegisteredException;
+import org.asamk.signal.manager.api.ServiceEnvironment;
 import org.asamk.signal.manager.config.ServiceConfig;
-import org.asamk.signal.manager.config.ServiceEnvironment;
 import org.asamk.signal.manager.config.ServiceEnvironmentConfig;
+import org.asamk.signal.manager.internal.AccountFileUpdaterImpl;
+import org.asamk.signal.manager.internal.ManagerImpl;
+import org.asamk.signal.manager.internal.MultiAccountManagerImpl;
+import org.asamk.signal.manager.internal.PathConfig;
+import org.asamk.signal.manager.internal.ProvisioningManagerImpl;
+import org.asamk.signal.manager.internal.RegistrationManagerImpl;
 import org.asamk.signal.manager.storage.SignalAccount;
 import org.asamk.signal.manager.storage.accounts.AccountsStore;
 import org.asamk.signal.manager.util.KeyUtils;
index 1f76f13e89419792cc8844d54aae238b80c5c7ef..2a39a38adc5484cb1f1c9fff605c2cb1649bfa5c 100644 (file)
@@ -1,6 +1,6 @@
 package org.asamk.signal.manager.actions;
 
-import org.asamk.signal.manager.groups.GroupIdV1;
+import org.asamk.signal.manager.api.GroupIdV1;
 import org.asamk.signal.manager.helper.Context;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
 
index 19bf8193a37b5347275057a9b2c776dd6f67d0fc..e9dc2528868eeb4ea40a3e7b78527c0c9e539cb9 100644 (file)
@@ -1,6 +1,6 @@
 package org.asamk.signal.manager.actions;
 
-import org.asamk.signal.manager.groups.GroupIdV1;
+import org.asamk.signal.manager.api.GroupIdV1;
 import org.asamk.signal.manager.helper.Context;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
 
index 7c0562cc753c62796cdf485586e8e00da25f1f6e..2300eae9d39c864cad97fb0e2b053aa7e638de3a 100644 (file)
@@ -1,6 +1,6 @@
 package org.asamk.signal.manager.actions;
 
-import org.asamk.signal.manager.groups.GroupId;
+import org.asamk.signal.manager.api.GroupId;
 import org.asamk.signal.manager.helper.Context;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
 import org.signal.libsignal.metadata.ProtocolException;
similarity index 98%
rename from lib/src/main/java/org/asamk/signal/manager/storage/recipients/Contact.java
rename to lib/src/main/java/org/asamk/signal/manager/api/Contact.java
index a1091b455fc146087a20522ce12c3f7e4cd56d3f..27c2d4dae3d9e84b182716d09a3ffd011297bef4 100644 (file)
@@ -1,4 +1,4 @@
-package org.asamk.signal.manager.storage.recipients;
+package org.asamk.signal.manager.api;
 
 import org.whispersystems.signalservice.internal.util.Util;
 
index 62f39290c40e65a6294189a36ba5d08ae764df01..5e7e36f8eb6a3cbef55b0ee33f2ad3f8ef80914c 100644 (file)
@@ -1,8 +1,5 @@
 package org.asamk.signal.manager.api;
 
-import org.asamk.signal.manager.groups.GroupId;
-import org.asamk.signal.manager.groups.GroupInviteLinkUrl;
-import org.asamk.signal.manager.groups.GroupPermission;
 import org.asamk.signal.manager.helper.RecipientAddressResolver;
 import org.asamk.signal.manager.storage.groups.GroupInfo;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
similarity index 97%
rename from lib/src/main/java/org/asamk/signal/manager/groups/GroupId.java
rename to lib/src/main/java/org/asamk/signal/manager/api/GroupId.java
index 38ddd4b62cca85766dd96aecff679efd0b198443..3095392f3e3f87501750fb58347fe472aa79e849 100644 (file)
@@ -1,4 +1,4 @@
-package org.asamk.signal.manager.groups;
+package org.asamk.signal.manager.api;
 
 import java.util.Arrays;
 import java.util.Base64;
similarity index 85%
rename from lib/src/main/java/org/asamk/signal/manager/groups/GroupIdFormatException.java
rename to lib/src/main/java/org/asamk/signal/manager/api/GroupIdFormatException.java
index 8050da22dad0a93c5b2eafc09b9813a2728d71a8..c76a7ef17a703820b4b4852770439d39a383b9a1 100644 (file)
@@ -1,4 +1,4 @@
-package org.asamk.signal.manager.groups;
+package org.asamk.signal.manager.api;
 
 public class GroupIdFormatException extends Exception {
 
similarity index 91%
rename from lib/src/main/java/org/asamk/signal/manager/groups/GroupIdV1.java
rename to lib/src/main/java/org/asamk/signal/manager/api/GroupIdV1.java
index acec587b99c1e42d7208e08e73c20e28cf718a68..90e5dde4ed54ce0635f4ac854f142c8337756052 100644 (file)
@@ -1,4 +1,4 @@
-package org.asamk.signal.manager.groups;
+package org.asamk.signal.manager.api;
 
 import java.util.Base64;
 
similarity index 86%
rename from lib/src/main/java/org/asamk/signal/manager/groups/GroupIdV2.java
rename to lib/src/main/java/org/asamk/signal/manager/api/GroupIdV2.java
index 35aac3304545e9569f1ba3b3a5b3fdf01d0deffa..44cda276fbd2bcbd6e95eec9c1e45abb18e7ed4c 100644 (file)
@@ -1,4 +1,4 @@
-package org.asamk.signal.manager.groups;
+package org.asamk.signal.manager.api;
 
 import java.util.Base64;
 
similarity index 98%
rename from lib/src/main/java/org/asamk/signal/manager/groups/GroupInviteLinkUrl.java
rename to lib/src/main/java/org/asamk/signal/manager/api/GroupInviteLinkUrl.java
index 3425d95ebf568d7a675d1b9c707fe38c083cf9f5..b21aeb97c2b150601dda057c8707b4cebab675c5 100644 (file)
@@ -1,7 +1,8 @@
-package org.asamk.signal.manager.groups;
+package org.asamk.signal.manager.api;
 
 import com.google.protobuf.ByteString;
 
+import org.asamk.signal.manager.groups.GroupLinkPassword;
 import org.signal.libsignal.zkgroup.InvalidInputException;
 import org.signal.libsignal.zkgroup.groups.GroupMasterKey;
 import org.signal.storageservice.protos.groups.GroupInviteLink;
similarity index 67%
rename from lib/src/main/java/org/asamk/signal/manager/groups/GroupLinkState.java
rename to lib/src/main/java/org/asamk/signal/manager/api/GroupLinkState.java
index ad567fbf83ed574452b89681b77660d7592ef382..899e8587acc3eadf8c88c80b8f3caedd7958f674 100644 (file)
@@ -1,4 +1,4 @@
-package org.asamk.signal.manager.groups;
+package org.asamk.signal.manager.api;
 
 public enum GroupLinkState {
     ENABLED,
similarity index 81%
rename from lib/src/main/java/org/asamk/signal/manager/groups/GroupNotFoundException.java
rename to lib/src/main/java/org/asamk/signal/manager/api/GroupNotFoundException.java
index 0fc0c444bc8f5e27facb52e5a722423e4f462e4e..052354a33130dab8584ac2edb9ccd17183483faa 100644 (file)
@@ -1,4 +1,4 @@
-package org.asamk.signal.manager.groups;
+package org.asamk.signal.manager.api;
 
 public class GroupNotFoundException extends Exception {
 
similarity index 62%
rename from lib/src/main/java/org/asamk/signal/manager/groups/GroupPermission.java
rename to lib/src/main/java/org/asamk/signal/manager/api/GroupPermission.java
index 0036649795f3ab06ecc9243eb52bbbbd2b2ef22d..db6f2ecd6444178fe40ba875db2313dbb15fe025 100644 (file)
@@ -1,4 +1,4 @@
-package org.asamk.signal.manager.groups;
+package org.asamk.signal.manager.api;
 
 public enum GroupPermission {
     EVERY_MEMBER,
similarity index 85%
rename from lib/src/main/java/org/asamk/signal/manager/groups/LastGroupAdminException.java
rename to lib/src/main/java/org/asamk/signal/manager/api/LastGroupAdminException.java
index 28c52fad9653b959dd00e702dc2f59e4243a1512..69d2ffb78dd69c0a66957eab14c96ea5ede63ebc 100644 (file)
@@ -1,4 +1,4 @@
-package org.asamk.signal.manager.groups;
+package org.asamk.signal.manager.api;
 
 public class LastGroupAdminException extends Exception {
 
index aba521796f47637a7e1ac0f171eb2d9dfc177a85..9cc34aba5490271739e8f73ab06600b5c9b2a9c4 100644 (file)
@@ -1,6 +1,5 @@
 package org.asamk.signal.manager.api;
 
-import org.asamk.signal.manager.groups.GroupId;
 import org.asamk.signal.manager.groups.GroupUtils;
 import org.asamk.signal.manager.helper.RecipientAddressResolver;
 import org.asamk.signal.manager.storage.recipients.RecipientResolver;
similarity index 85%
rename from lib/src/main/java/org/asamk/signal/manager/groups/NotAGroupMemberException.java
rename to lib/src/main/java/org/asamk/signal/manager/api/NotAGroupMemberException.java
index 08cbcacd3131f25e8c975cff150dc8212d87c196..6c188da3c40ff35d8da4c696e81fc6ff37923fec 100644 (file)
@@ -1,4 +1,4 @@
-package org.asamk.signal.manager.groups;
+package org.asamk.signal.manager.api;
 
 public class NotAGroupMemberException extends Exception {
 
similarity index 97%
rename from lib/src/main/java/org/asamk/signal/manager/storage/recipients/Profile.java
rename to lib/src/main/java/org/asamk/signal/manager/api/Profile.java
index 909337b7c688d1908a552b6ef574158891643248..3eb58a55aefc3fc3afc3ed6119451845ee0d61c0 100644 (file)
@@ -1,4 +1,4 @@
-package org.asamk.signal.manager.storage.recipients;
+package org.asamk.signal.manager.api;
 
 import org.whispersystems.signalservice.internal.util.Util;
 
@@ -142,7 +142,7 @@ public class Profile {
         ENABLED,
         UNRESTRICTED;
 
-        static UnidentifiedAccessMode valueOfOrUnknown(String value) {
+        public static UnidentifiedAccessMode valueOfOrUnknown(String value) {
             try {
                 return valueOf(value);
             } catch (IllegalArgumentException ignored) {
@@ -157,7 +157,7 @@ public class Profile {
         senderKey,
         announcementGroup;
 
-        static Capability valueOfOrNull(String value) {
+        public static Capability valueOfOrNull(String value) {
             try {
                 return valueOf(value);
             } catch (IllegalArgumentException ignored) {
index 1aea3c45e390e1028fe00c3d0968a8868d6e23d6..52b68e58803aaaafe69d85c23972ce82714817b9 100644 (file)
@@ -1,7 +1,5 @@
 package org.asamk.signal.manager.api;
 
-import org.asamk.signal.manager.storage.recipients.Contact;
-import org.asamk.signal.manager.storage.recipients.Profile;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
 import org.signal.libsignal.zkgroup.profiles.ExpiringProfileKeyCredential;
 import org.signal.libsignal.zkgroup.profiles.ProfileKey;
index d8952ec07810fc1c02c03b78359137ac346a5f8a..fc82205805226aedf326d640fbe4fff7fa53c368 100644 (file)
@@ -1,6 +1,5 @@
 package org.asamk.signal.manager.api;
 
-import org.asamk.signal.manager.groups.GroupId;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.whispersystems.signalservice.api.util.PhoneNumberFormatter;
similarity index 59%
rename from lib/src/main/java/org/asamk/signal/manager/config/ServiceEnvironment.java
rename to lib/src/main/java/org/asamk/signal/manager/api/ServiceEnvironment.java
index d83bf7d22dd67a647606cebd1b0e70094f474210..e3499827275978ad23cd49d52f8183643c14c376 100644 (file)
@@ -1,4 +1,4 @@
-package org.asamk.signal.manager.config;
+package org.asamk.signal.manager.api;
 
 public enum ServiceEnvironment {
     LIVE,
similarity index 58%
rename from lib/src/main/java/org/asamk/signal/manager/storage/identities/TrustNewIdentity.java
rename to lib/src/main/java/org/asamk/signal/manager/api/TrustNewIdentity.java
index b2db73a34c49ff07f5bdd8349b99af609c4452fc..e86c11d95d2aac6b4f134b32401528be1d960d3e 100644 (file)
@@ -1,4 +1,4 @@
-package org.asamk.signal.manager.storage.identities;
+package org.asamk.signal.manager.api;
 
 public enum TrustNewIdentity {
     ALWAYS,
index 0a2cb5eeec1b3a16c9a164004c6a42a352976de3..c1ba4270bea2f8d0f66bcf48e037cf15996c96ae 100644 (file)
@@ -1,8 +1,5 @@
 package org.asamk.signal.manager.api;
 
-import org.asamk.signal.manager.groups.GroupLinkState;
-import org.asamk.signal.manager.groups.GroupPermission;
-
 import java.util.Set;
 
 public class UpdateGroup {
index 7100c32627b5fd9962576cb86ec4465904ca0c40..b2b45a9cf67825d1618ec68fbdb6db0c7536632e 100644 (file)
@@ -1,7 +1,6 @@
 package org.asamk.signal.manager.config;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.asamk.signal.manager.api.ServiceEnvironment;
 import org.whispersystems.signalservice.api.account.AccountAttributes;
 import org.whispersystems.signalservice.api.push.TrustStore;
 
@@ -16,8 +15,6 @@ import okhttp3.Interceptor;
 
 public class ServiceConfig {
 
-    private final static Logger logger = LoggerFactory.getLogger(ServiceConfig.class);
-
     public final static int PREKEY_MINIMUM_COUNT = 20;
     public final static int PREKEY_BATCH_SIZE = 100;
     public final static int MAX_ATTACHMENT_SIZE = 150 * 1024 * 1024;
@@ -47,20 +44,6 @@ public class ServiceConfig {
         return new AccountAttributes.Capabilities(false, true, true, true, true, giftBadges, false, false);
     }
 
-    public static boolean isSignalClientAvailable() {
-        try {
-            try {
-                org.signal.libsignal.internal.Native.UuidCiphertext_CheckValidContents(new byte[0]);
-            } catch (Exception e) {
-                logger.trace("Expected exception when checking libsignal-client: {}", e.getMessage());
-            }
-            return true;
-        } catch (UnsatisfiedLinkError e) {
-            logger.warn("Failed to call libsignal-client: {}", e.getMessage());
-            return false;
-        }
-    }
-
     public static KeyStore getIasKeyStore() {
         return iasKeyStore;
     }
index 0ca2c914fe1d3be1f7077a67fe9fd0116e4221a6..2a95f34f1258635088a5a4c34cd74690f7448f36 100644 (file)
@@ -1,5 +1,6 @@
 package org.asamk.signal.manager.config;
 
+import org.asamk.signal.manager.api.ServiceEnvironment;
 import org.signal.libsignal.protocol.ecc.ECPublicKey;
 import org.whispersystems.signalservice.internal.configuration.SignalServiceConfiguration;
 
index 356fb9843f2f59c67582ac227fab854751ef7175..b73be0ab0ada04eaa3cc5d5a6b398d7cf957e3e6 100644 (file)
@@ -1,5 +1,8 @@
 package org.asamk.signal.manager.groups;
 
+import org.asamk.signal.manager.api.GroupId;
+import org.asamk.signal.manager.api.GroupIdV1;
+import org.asamk.signal.manager.api.GroupIdV2;
 import org.asamk.signal.manager.storage.groups.GroupInfo;
 import org.asamk.signal.manager.storage.groups.GroupInfoV1;
 import org.asamk.signal.manager.storage.groups.GroupInfoV2;
index 3bff549d0853ffd61a4df25186024aa1791b64ac..286e477e02820604195ea0c8156af3d30d1e73ec 100644 (file)
@@ -1,13 +1,13 @@
 package org.asamk.signal.manager.helper;
 
-import org.asamk.signal.manager.DeviceLinkInfo;
-import org.asamk.signal.manager.SignalDependencies;
 import org.asamk.signal.manager.api.CaptchaRequiredException;
 import org.asamk.signal.manager.api.IncorrectPinException;
 import org.asamk.signal.manager.api.InvalidDeviceLinkException;
 import org.asamk.signal.manager.api.NonNormalizedPhoneNumberException;
 import org.asamk.signal.manager.api.PinLockedException;
 import org.asamk.signal.manager.api.RateLimitException;
+import org.asamk.signal.manager.internal.DeviceLinkInfo;
+import org.asamk.signal.manager.internal.SignalDependencies;
 import org.asamk.signal.manager.storage.SignalAccount;
 import org.asamk.signal.manager.util.KeyUtils;
 import org.asamk.signal.manager.util.NumberVerificationUtils;
index 9250927db0fdb00bc9ba95e8a07c7b17d527435c..7c2d90894041171707c0613194b67144fc01a16a 100644 (file)
@@ -1,9 +1,9 @@
 package org.asamk.signal.manager.helper;
 
-import org.asamk.signal.manager.AttachmentStore;
-import org.asamk.signal.manager.SignalDependencies;
 import org.asamk.signal.manager.api.AttachmentInvalidException;
 import org.asamk.signal.manager.config.ServiceConfig;
+import org.asamk.signal.manager.internal.SignalDependencies;
+import org.asamk.signal.manager.storage.AttachmentStore;
 import org.asamk.signal.manager.util.AttachmentUtils;
 import org.asamk.signal.manager.util.IOUtils;
 import org.signal.libsignal.protocol.InvalidMessageException;
index f43d083c2be891cf884c111a566f0b23769d77a6..80df94478338e59064dd8469321ccb58cb45812d 100644 (file)
@@ -1,7 +1,7 @@
 package org.asamk.signal.manager.helper;
 
+import org.asamk.signal.manager.api.Contact;
 import org.asamk.signal.manager.storage.SignalAccount;
-import org.asamk.signal.manager.storage.recipients.Contact;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
 
 public class ContactHelper {
index 7ff8bd6426daafe0c7b86a9f742054bf12c3f535..2caeb0fb5dfafc096834527d34bd57fed2a680bb 100644 (file)
@@ -1,9 +1,9 @@
 package org.asamk.signal.manager.helper;
 
-import org.asamk.signal.manager.AttachmentStore;
-import org.asamk.signal.manager.AvatarStore;
-import org.asamk.signal.manager.JobExecutor;
-import org.asamk.signal.manager.SignalDependencies;
+import org.asamk.signal.manager.internal.JobExecutor;
+import org.asamk.signal.manager.internal.SignalDependencies;
+import org.asamk.signal.manager.storage.AttachmentStore;
+import org.asamk.signal.manager.storage.AvatarStore;
 import org.asamk.signal.manager.storage.SignalAccount;
 import org.asamk.signal.manager.storage.stickerPacks.StickerPackStore;
 
index 5658dc25e9b5041632dfb556d40725a8af577849..d987d3d1e4c720e30dd556d155df6528a12b550a 100644 (file)
@@ -1,24 +1,24 @@
 package org.asamk.signal.manager.helper;
 
-import org.asamk.signal.manager.SignalDependencies;
 import org.asamk.signal.manager.api.AttachmentInvalidException;
+import org.asamk.signal.manager.api.GroupId;
+import org.asamk.signal.manager.api.GroupIdV1;
+import org.asamk.signal.manager.api.GroupIdV2;
+import org.asamk.signal.manager.api.GroupInviteLinkUrl;
+import org.asamk.signal.manager.api.GroupLinkState;
+import org.asamk.signal.manager.api.GroupNotFoundException;
+import org.asamk.signal.manager.api.GroupPermission;
+import org.asamk.signal.manager.api.GroupSendingNotAllowedException;
 import org.asamk.signal.manager.api.InactiveGroupLinkException;
+import org.asamk.signal.manager.api.LastGroupAdminException;
+import org.asamk.signal.manager.api.NotAGroupMemberException;
 import org.asamk.signal.manager.api.Pair;
 import org.asamk.signal.manager.api.PendingAdminApprovalException;
 import org.asamk.signal.manager.api.SendGroupMessageResults;
 import org.asamk.signal.manager.api.SendMessageResult;
 import org.asamk.signal.manager.config.ServiceConfig;
-import org.asamk.signal.manager.groups.GroupId;
-import org.asamk.signal.manager.groups.GroupIdV1;
-import org.asamk.signal.manager.groups.GroupIdV2;
-import org.asamk.signal.manager.groups.GroupInviteLinkUrl;
-import org.asamk.signal.manager.groups.GroupLinkState;
-import org.asamk.signal.manager.groups.GroupNotFoundException;
-import org.asamk.signal.manager.groups.GroupPermission;
-import org.asamk.signal.manager.groups.GroupSendingNotAllowedException;
 import org.asamk.signal.manager.groups.GroupUtils;
-import org.asamk.signal.manager.groups.LastGroupAdminException;
-import org.asamk.signal.manager.groups.NotAGroupMemberException;
+import org.asamk.signal.manager.internal.SignalDependencies;
 import org.asamk.signal.manager.storage.SignalAccount;
 import org.asamk.signal.manager.storage.groups.GroupInfo;
 import org.asamk.signal.manager.storage.groups.GroupInfoV1;
index e410d232d3507a1ccfff13549010b1749b1a525a..85462e1975321c22a4e3f5ff5b8d1fdb6196e3a1 100644 (file)
@@ -3,13 +3,13 @@ package org.asamk.signal.manager.helper;
 import com.google.protobuf.ByteString;
 import com.google.protobuf.InvalidProtocolBufferException;
 
-import org.asamk.signal.manager.SignalDependencies;
+import org.asamk.signal.manager.api.GroupLinkState;
+import org.asamk.signal.manager.api.GroupPermission;
+import org.asamk.signal.manager.api.NotAGroupMemberException;
 import org.asamk.signal.manager.api.Pair;
 import org.asamk.signal.manager.groups.GroupLinkPassword;
-import org.asamk.signal.manager.groups.GroupLinkState;
-import org.asamk.signal.manager.groups.GroupPermission;
 import org.asamk.signal.manager.groups.GroupUtils;
-import org.asamk.signal.manager.groups.NotAGroupMemberException;
+import org.asamk.signal.manager.internal.SignalDependencies;
 import org.asamk.signal.manager.storage.groups.GroupInfoV2;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
 import org.asamk.signal.manager.util.Utils;
index d0a6a5c00bde22ebf797e8bd58591781d3ffde36..3b616644d80be8e7d20fc9948c993892e37fc45e 100644 (file)
@@ -1,7 +1,6 @@
 package org.asamk.signal.manager.helper;
 
 import org.asamk.signal.manager.Manager;
-import org.asamk.signal.manager.SignalDependencies;
 import org.asamk.signal.manager.actions.HandleAction;
 import org.asamk.signal.manager.actions.RefreshPreKeysAction;
 import org.asamk.signal.manager.actions.RenewSessionAction;
@@ -19,19 +18,20 @@ import org.asamk.signal.manager.actions.SendSyncContactsAction;
 import org.asamk.signal.manager.actions.SendSyncGroupsAction;
 import org.asamk.signal.manager.actions.SendSyncKeysAction;
 import org.asamk.signal.manager.actions.UpdateAccountAttributesAction;
+import org.asamk.signal.manager.api.GroupId;
+import org.asamk.signal.manager.api.GroupNotFoundException;
 import org.asamk.signal.manager.api.MessageEnvelope;
 import org.asamk.signal.manager.api.Pair;
+import org.asamk.signal.manager.api.Profile;
 import org.asamk.signal.manager.api.ReceiveConfig;
 import org.asamk.signal.manager.api.StickerPackId;
 import org.asamk.signal.manager.api.TrustLevel;
 import org.asamk.signal.manager.api.UntrustedIdentityException;
-import org.asamk.signal.manager.groups.GroupId;
-import org.asamk.signal.manager.groups.GroupNotFoundException;
 import org.asamk.signal.manager.groups.GroupUtils;
+import org.asamk.signal.manager.internal.SignalDependencies;
 import org.asamk.signal.manager.jobs.RetrieveStickerPackJob;
 import org.asamk.signal.manager.storage.SignalAccount;
 import org.asamk.signal.manager.storage.groups.GroupInfoV1;
-import org.asamk.signal.manager.storage.recipients.Profile;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
 import org.asamk.signal.manager.storage.stickers.StickerPack;
 import org.signal.libsignal.metadata.ProtocolInvalidKeyException;
index 30ab919e08b0454ff94871562805611c206cf3ea..24cd675ce3613ad20fb581fe47669d26d20ed734 100644 (file)
@@ -1,7 +1,7 @@
 package org.asamk.signal.manager.helper;
 
-import org.asamk.signal.manager.SignalDependencies;
 import org.asamk.signal.manager.config.ServiceConfig;
+import org.asamk.signal.manager.internal.SignalDependencies;
 import org.asamk.signal.manager.storage.SignalAccount;
 import org.asamk.signal.manager.util.KeyUtils;
 import org.signal.libsignal.protocol.IdentityKeyPair;
index da7440ed4a4d5236167d0ea0c89e74f39902c5ea..6d5f2aa180c9e97c32cfbd032ce2a466657b662e 100644 (file)
@@ -1,12 +1,12 @@
 package org.asamk.signal.manager.helper;
 
-import org.asamk.signal.manager.SignalDependencies;
+import org.asamk.signal.manager.api.GroupNotFoundException;
+import org.asamk.signal.manager.api.NotAGroupMemberException;
+import org.asamk.signal.manager.api.Profile;
 import org.asamk.signal.manager.config.ServiceConfig;
-import org.asamk.signal.manager.groups.GroupNotFoundException;
-import org.asamk.signal.manager.groups.NotAGroupMemberException;
+import org.asamk.signal.manager.internal.SignalDependencies;
 import org.asamk.signal.manager.storage.SignalAccount;
 import org.asamk.signal.manager.storage.groups.GroupInfoV2;
-import org.asamk.signal.manager.storage.recipients.Profile;
 import org.asamk.signal.manager.storage.recipients.RecipientAddress;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
 import org.asamk.signal.manager.util.IOUtils;
index d0ebbc95c3346cde75646be8355df3816ac758f9..b226222350159f4d95594ef3bb69227b165291eb 100644 (file)
@@ -1,10 +1,10 @@
 package org.asamk.signal.manager.helper;
 
 import org.asamk.signal.manager.Manager;
-import org.asamk.signal.manager.SignalDependencies;
 import org.asamk.signal.manager.actions.HandleAction;
 import org.asamk.signal.manager.api.ReceiveConfig;
 import org.asamk.signal.manager.api.UntrustedIdentityException;
+import org.asamk.signal.manager.internal.SignalDependencies;
 import org.asamk.signal.manager.storage.SignalAccount;
 import org.asamk.signal.manager.storage.messageCache.CachedMessage;
 import org.asamk.signal.manager.storage.recipients.RecipientAddress;
index f614d7ec9ab10e2ef9ab3f4dc7f77f4e930594ea..384d1fa07a6b817ab3da7e555919019e17783e70 100644 (file)
@@ -1,9 +1,9 @@
 package org.asamk.signal.manager.helper;
 
-import org.asamk.signal.manager.SignalDependencies;
 import org.asamk.signal.manager.api.RecipientIdentifier;
 import org.asamk.signal.manager.api.UnregisteredRecipientException;
 import org.asamk.signal.manager.config.ServiceEnvironmentConfig;
+import org.asamk.signal.manager.internal.SignalDependencies;
 import org.asamk.signal.manager.storage.SignalAccount;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
 import org.signal.libsignal.usernames.BaseUsernameException;
index a410c2c9e7c29c4f9aef8d3cefb982e3c061889e..36c4f0d535052d00035cb27afe2dbe41d66eacf1 100644 (file)
@@ -2,17 +2,17 @@ package org.asamk.signal.manager.helper;
 
 import com.google.protobuf.ByteString;
 
-import org.asamk.signal.manager.SignalDependencies;
+import org.asamk.signal.manager.api.Contact;
+import org.asamk.signal.manager.api.GroupId;
+import org.asamk.signal.manager.api.GroupNotFoundException;
+import org.asamk.signal.manager.api.GroupSendingNotAllowedException;
+import org.asamk.signal.manager.api.NotAGroupMemberException;
+import org.asamk.signal.manager.api.Profile;
 import org.asamk.signal.manager.api.UnregisteredRecipientException;
-import org.asamk.signal.manager.groups.GroupId;
-import org.asamk.signal.manager.groups.GroupNotFoundException;
-import org.asamk.signal.manager.groups.GroupSendingNotAllowedException;
 import org.asamk.signal.manager.groups.GroupUtils;
-import org.asamk.signal.manager.groups.NotAGroupMemberException;
+import org.asamk.signal.manager.internal.SignalDependencies;
 import org.asamk.signal.manager.storage.SignalAccount;
 import org.asamk.signal.manager.storage.groups.GroupInfo;
-import org.asamk.signal.manager.storage.recipients.Contact;
-import org.asamk.signal.manager.storage.recipients.Profile;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
 import org.asamk.signal.manager.storage.sendLog.MessageSendLogEntry;
 import org.signal.libsignal.protocol.InvalidKeyException;
index c67a65737c24358bd237eeaabda5901d91339569..915f3d71fe32f537282acf261ed8bc7db607eafb 100644 (file)
@@ -1,8 +1,8 @@
 package org.asamk.signal.manager.helper;
 
-import org.asamk.signal.manager.SignalDependencies;
 import org.asamk.signal.manager.api.InvalidStickerException;
 import org.asamk.signal.manager.api.StickerPackId;
+import org.asamk.signal.manager.internal.SignalDependencies;
 import org.asamk.signal.manager.storage.SignalAccount;
 import org.asamk.signal.manager.storage.stickerPacks.JsonStickerPack;
 import org.asamk.signal.manager.util.IOUtils;
index 50eceb676837746c16fb0ae12689511c9ae26de3..fc084f28b4bf4642f809e325cc9f9bfa72576756 100644 (file)
@@ -1,12 +1,12 @@
 package org.asamk.signal.manager.helper;
 
-import org.asamk.signal.manager.SignalDependencies;
+import org.asamk.signal.manager.api.Contact;
+import org.asamk.signal.manager.api.GroupId;
 import org.asamk.signal.manager.api.PhoneNumberSharingMode;
+import org.asamk.signal.manager.api.Profile;
 import org.asamk.signal.manager.api.TrustLevel;
-import org.asamk.signal.manager.groups.GroupId;
+import org.asamk.signal.manager.internal.SignalDependencies;
 import org.asamk.signal.manager.storage.SignalAccount;
-import org.asamk.signal.manager.storage.recipients.Contact;
-import org.asamk.signal.manager.storage.recipients.Profile;
 import org.asamk.signal.manager.storage.recipients.RecipientAddress;
 import org.signal.libsignal.protocol.IdentityKey;
 import org.signal.libsignal.protocol.InvalidKeyException;
index a005f07dab5d962edb067c9e334812d14ec70313..f015cb1ff776f74a7aa149a5eceb0d92c6d4a938 100644 (file)
@@ -1,10 +1,10 @@
 package org.asamk.signal.manager.helper;
 
+import org.asamk.signal.manager.api.Contact;
+import org.asamk.signal.manager.api.GroupId;
 import org.asamk.signal.manager.api.TrustLevel;
-import org.asamk.signal.manager.groups.GroupId;
 import org.asamk.signal.manager.storage.SignalAccount;
 import org.asamk.signal.manager.storage.groups.GroupInfoV1;
-import org.asamk.signal.manager.storage.recipients.Contact;
 import org.asamk.signal.manager.storage.recipients.RecipientAddress;
 import org.asamk.signal.manager.util.AttachmentUtils;
 import org.asamk.signal.manager.util.IOUtils;
index 920315765fce70859dfc28f4e4b26a68ba17b2ff..bc02e319d22169dce87341af8d2954f4a61c3fb2 100644 (file)
@@ -1,9 +1,9 @@
 package org.asamk.signal.manager.helper;
 
-import org.asamk.signal.manager.SignalDependencies;
 import org.asamk.signal.manager.api.PhoneNumberSharingMode;
+import org.asamk.signal.manager.api.Profile;
+import org.asamk.signal.manager.internal.SignalDependencies;
 import org.asamk.signal.manager.storage.SignalAccount;
-import org.asamk.signal.manager.storage.recipients.Profile;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
 import org.signal.libsignal.metadata.certificate.InvalidCertificateException;
 import org.signal.libsignal.metadata.certificate.SenderCertificate;
similarity index 86%
rename from lib/src/main/java/org/asamk/signal/manager/AccountFileUpdaterImpl.java
rename to lib/src/main/java/org/asamk/signal/manager/internal/AccountFileUpdaterImpl.java
index af0008c30ebfa1aaedcacc3c8699d9ae00f95774..5c99d0c1cab400fe658f1ce2e4ffccf7b127e7d1 100644 (file)
@@ -1,10 +1,10 @@
-package org.asamk.signal.manager;
+package org.asamk.signal.manager.internal;
 
 import org.asamk.signal.manager.helper.AccountFileUpdater;
 import org.asamk.signal.manager.storage.accounts.AccountsStore;
 import org.whispersystems.signalservice.api.push.ACI;
 
-class AccountFileUpdaterImpl implements AccountFileUpdater {
+public class AccountFileUpdaterImpl implements AccountFileUpdater {
 
     private final AccountsStore accountsStore;
     private final String accountPath;
similarity index 98%
rename from lib/src/main/java/org/asamk/signal/manager/DeviceLinkInfo.java
rename to lib/src/main/java/org/asamk/signal/manager/internal/DeviceLinkInfo.java
index 356cb47d56c0253b23f1d65f011e97c4d760dc47..50f04026420432b9b96c1b6585946b312f4aa538 100644 (file)
@@ -1,4 +1,4 @@
-package org.asamk.signal.manager;
+package org.asamk.signal.manager.internal;
 
 import org.asamk.signal.manager.api.InvalidDeviceLinkException;
 import org.asamk.signal.manager.util.Utils;
similarity index 87%
rename from lib/src/main/java/org/asamk/signal/manager/JobExecutor.java
rename to lib/src/main/java/org/asamk/signal/manager/internal/JobExecutor.java
index 12ade9caf3170f5858f932e23444753f9611183b..8a3e815f96e21369938dc206c356ab78a7701708 100644 (file)
@@ -1,4 +1,4 @@
-package org.asamk.signal.manager;
+package org.asamk.signal.manager.internal;
 
 import org.asamk.signal.manager.helper.Context;
 import org.asamk.signal.manager.jobs.Job;
similarity index 92%
rename from lib/src/main/java/org/asamk/signal/manager/LibSignalLogger.java
rename to lib/src/main/java/org/asamk/signal/manager/internal/LibSignalLogger.java
index 7942c194892af445c9d9ff30fa34a79c44afef15..66a480e9871759741048405ad5363a4855dc27d1 100644 (file)
@@ -1,4 +1,4 @@
-package org.asamk.signal.manager;
+package org.asamk.signal.manager.internal;
 
 import org.signal.libsignal.protocol.logging.SignalProtocolLogger;
 import org.signal.libsignal.protocol.logging.SignalProtocolLoggerProvider;
@@ -9,7 +9,7 @@ public class LibSignalLogger implements SignalProtocolLogger {
 
     private final static Logger logger = LoggerFactory.getLogger("LibSignal");
 
-    static void initLogger() {
+    public static void initLogger() {
         SignalProtocolLoggerProvider.setProvider(new LibSignalLogger());
     }
 
similarity index 98%
rename from lib/src/main/java/org/asamk/signal/manager/ManagerImpl.java
rename to lib/src/main/java/org/asamk/signal/manager/internal/ManagerImpl.java
index 1db3cbc7eae42e8212ba16d060a832566c60a65a..7e6a3972fed3ce69ceb6110c36ccdc2d2b2350ad 100644 (file)
   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package org.asamk.signal.manager;
+package org.asamk.signal.manager.internal;
 
+import org.asamk.signal.manager.Manager;
 import org.asamk.signal.manager.api.AlreadyReceivingException;
 import org.asamk.signal.manager.api.AttachmentInvalidException;
 import org.asamk.signal.manager.api.Configuration;
 import org.asamk.signal.manager.api.Device;
 import org.asamk.signal.manager.api.Group;
+import org.asamk.signal.manager.api.GroupId;
+import org.asamk.signal.manager.api.GroupInviteLinkUrl;
+import org.asamk.signal.manager.api.GroupNotFoundException;
+import org.asamk.signal.manager.api.GroupSendingNotAllowedException;
 import org.asamk.signal.manager.api.Identity;
 import org.asamk.signal.manager.api.InactiveGroupLinkException;
 import org.asamk.signal.manager.api.InvalidDeviceLinkException;
 import org.asamk.signal.manager.api.InvalidStickerException;
 import org.asamk.signal.manager.api.InvalidUsernameException;
+import org.asamk.signal.manager.api.LastGroupAdminException;
 import org.asamk.signal.manager.api.Message;
 import org.asamk.signal.manager.api.MessageEnvelope;
+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.Profile;
 import org.asamk.signal.manager.api.ReceiveConfig;
 import org.asamk.signal.manager.api.Recipient;
 import org.asamk.signal.manager.api.RecipientIdentifier;
@@ -47,18 +55,13 @@ 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.config.ServiceEnvironmentConfig;
-import org.asamk.signal.manager.groups.GroupId;
-import org.asamk.signal.manager.groups.GroupInviteLinkUrl;
-import org.asamk.signal.manager.groups.GroupNotFoundException;
-import org.asamk.signal.manager.groups.GroupSendingNotAllowedException;
-import org.asamk.signal.manager.groups.LastGroupAdminException;
-import org.asamk.signal.manager.groups.NotAGroupMemberException;
 import org.asamk.signal.manager.helper.AccountFileUpdater;
 import org.asamk.signal.manager.helper.Context;
+import org.asamk.signal.manager.storage.AttachmentStore;
+import org.asamk.signal.manager.storage.AvatarStore;
 import org.asamk.signal.manager.storage.SignalAccount;
 import org.asamk.signal.manager.storage.groups.GroupInfo;
 import org.asamk.signal.manager.storage.identities.IdentityInfo;
-import org.asamk.signal.manager.storage.recipients.Profile;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
 import org.asamk.signal.manager.storage.stickerPacks.JsonStickerPack;
 import org.asamk.signal.manager.storage.stickerPacks.StickerPackStore;
@@ -110,7 +113,7 @@ import java.util.stream.Stream;
 
 import io.reactivex.rxjava3.disposables.CompositeDisposable;
 
-class ManagerImpl implements Manager {
+public class ManagerImpl implements Manager {
 
     private final static Logger logger = LoggerFactory.getLogger(ManagerImpl.class);
 
@@ -128,7 +131,7 @@ class ManagerImpl implements Manager {
     private final List<Runnable> addressChangedListeners = new ArrayList<>();
     private final CompositeDisposable disposable = new CompositeDisposable();
 
-    ManagerImpl(
+    public ManagerImpl(
             SignalAccount account,
             PathConfig pathConfig,
             AccountFileUpdater accountFileUpdater,
@@ -200,7 +203,7 @@ class ManagerImpl implements Manager {
         return account.getNumber();
     }
 
-    void checkAccountState() throws IOException {
+    public void checkAccountState() throws IOException {
         context.getAccountHelper().checkAccountState();
     }
 
similarity index 91%
rename from lib/src/main/java/org/asamk/signal/manager/MultiAccountManagerImpl.java
rename to lib/src/main/java/org/asamk/signal/manager/internal/MultiAccountManagerImpl.java
index 072e965b565cc7ecb56b712ae5aabcc77890397d..0461254a4235b68fd27eb9b6f76dae76bf065d06 100644 (file)
@@ -1,5 +1,10 @@
-package org.asamk.signal.manager;
+package org.asamk.signal.manager.internal;
 
+import org.asamk.signal.manager.Manager;
+import org.asamk.signal.manager.MultiAccountManager;
+import org.asamk.signal.manager.ProvisioningManager;
+import org.asamk.signal.manager.RegistrationManager;
+import org.asamk.signal.manager.SignalAccountFiles;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -15,7 +20,7 @@ import java.util.Set;
 import java.util.concurrent.TimeoutException;
 import java.util.function.Consumer;
 
-class MultiAccountManagerImpl implements MultiAccountManager {
+public class MultiAccountManagerImpl implements MultiAccountManager {
 
     private final static Logger logger = LoggerFactory.getLogger(MultiAccountManagerImpl.class);
 
similarity index 71%
rename from lib/src/main/java/org/asamk/signal/manager/PathConfig.java
rename to lib/src/main/java/org/asamk/signal/manager/internal/PathConfig.java
index f3bacdc3dd61e67d76a4889debe05d74236a4677..1c7a80f38603699cec06f9ff76a52af305964148 100644 (file)
@@ -1,12 +1,12 @@
-package org.asamk.signal.manager;
+package org.asamk.signal.manager.internal;
 
 import java.io.File;
 
-record PathConfig(
+public record PathConfig(
         File dataPath, File attachmentsPath, File avatarsPath, File stickerPacksPath
 ) {
 
-    static PathConfig createDefault(final File settingsPath) {
+    public static PathConfig createDefault(final File settingsPath) {
         return new PathConfig(new File(settingsPath, "data"),
                 new File(settingsPath, "attachments"),
                 new File(settingsPath, "avatars"),
similarity index 97%
rename from lib/src/main/java/org/asamk/signal/manager/ProvisioningManagerImpl.java
rename to lib/src/main/java/org/asamk/signal/manager/internal/ProvisioningManagerImpl.java
index 544032dadc7b24c451463eac11afc5dfabd3aa34..d372a27ec468107bdfd0cbd13db50b0b81eb80c0 100644 (file)
   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package org.asamk.signal.manager;
+package org.asamk.signal.manager.internal;
 
+import org.asamk.signal.manager.Manager;
+import org.asamk.signal.manager.ProvisioningManager;
+import org.asamk.signal.manager.Settings;
 import org.asamk.signal.manager.api.UserAlreadyExistsException;
 import org.asamk.signal.manager.config.ServiceConfig;
 import org.asamk.signal.manager.config.ServiceEnvironmentConfig;
@@ -43,7 +46,7 @@ import java.util.function.Consumer;
 
 import static org.asamk.signal.manager.config.ServiceConfig.getCapabilities;
 
-class ProvisioningManagerImpl implements ProvisioningManager {
+public class ProvisioningManagerImpl implements ProvisioningManager {
 
     private final static Logger logger = LoggerFactory.getLogger(ProvisioningManagerImpl.class);
 
@@ -59,7 +62,7 @@ class ProvisioningManagerImpl implements ProvisioningManager {
     private final int pniRegistrationId;
     private final String password;
 
-    ProvisioningManagerImpl(
+    public ProvisioningManagerImpl(
             PathConfig pathConfig,
             ServiceEnvironmentConfig serviceEnvironmentConfig,
             String userAgent,
similarity index 97%
rename from lib/src/main/java/org/asamk/signal/manager/RegistrationManagerImpl.java
rename to lib/src/main/java/org/asamk/signal/manager/internal/RegistrationManagerImpl.java
index 0e3c9af003178730fbe2d8f96340117f374fe431..eb51b715faf2b55b848bca40e5e1cd197b168201 100644 (file)
   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package org.asamk.signal.manager;
+package org.asamk.signal.manager.internal;
 
+import org.asamk.signal.manager.Manager;
+import org.asamk.signal.manager.RegistrationManager;
 import org.asamk.signal.manager.api.CaptchaRequiredException;
 import org.asamk.signal.manager.api.IncorrectPinException;
 import org.asamk.signal.manager.api.NonNormalizedPhoneNumberException;
@@ -46,7 +48,7 @@ import org.whispersystems.signalservice.internal.util.DynamicCredentialsProvider
 import java.io.IOException;
 import java.util.function.Consumer;
 
-class RegistrationManagerImpl implements RegistrationManager {
+public class RegistrationManagerImpl implements RegistrationManager {
 
     private final static Logger logger = LoggerFactory.getLogger(RegistrationManagerImpl.class);
 
@@ -60,7 +62,7 @@ class RegistrationManagerImpl implements RegistrationManager {
     private final PinHelper pinHelper;
     private final AccountFileUpdater accountFileUpdater;
 
-    RegistrationManagerImpl(
+    public RegistrationManagerImpl(
             SignalAccount account,
             PathConfig pathConfig,
             ServiceEnvironmentConfig serviceEnvironmentConfig,
similarity index 99%
rename from lib/src/main/java/org/asamk/signal/manager/SignalDependencies.java
rename to lib/src/main/java/org/asamk/signal/manager/internal/SignalDependencies.java
index 7a8ecc4b95ab458ef91a29d797955b8472a6821d..bf2f76dfd103021521cdeec8049c8b928617d280 100644 (file)
@@ -1,4 +1,4 @@
-package org.asamk.signal.manager;
+package org.asamk.signal.manager.internal;
 
 import org.asamk.signal.manager.config.ServiceConfig;
 import org.asamk.signal.manager.config.ServiceEnvironmentConfig;
similarity index 99%
rename from lib/src/main/java/org/asamk/signal/manager/SignalWebSocketHealthMonitor.java
rename to lib/src/main/java/org/asamk/signal/manager/internal/SignalWebSocketHealthMonitor.java
index 95d126740edb9ee3fd14d9fb7bc3d01ff02286c4..f4ac35e2705d1f9614e71c956bfcc4bca8daba05 100644 (file)
@@ -1,4 +1,4 @@
-package org.asamk.signal.manager;
+package org.asamk.signal.manager.internal;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
similarity index 98%
rename from lib/src/main/java/org/asamk/signal/manager/AttachmentStore.java
rename to lib/src/main/java/org/asamk/signal/manager/storage/AttachmentStore.java
index e95c206958a282583ee4ef1d5174d9330834ea8c..5e734174aa064216e7296436e3a489c84e95930d 100644 (file)
@@ -1,4 +1,4 @@
-package org.asamk.signal.manager;
+package org.asamk.signal.manager.storage;
 
 import org.asamk.signal.manager.util.IOUtils;
 import org.asamk.signal.manager.util.MimeUtils;
similarity index 97%
rename from lib/src/main/java/org/asamk/signal/manager/AvatarStore.java
rename to lib/src/main/java/org/asamk/signal/manager/storage/AvatarStore.java
index b4bd188c04e919a5afd3bef44584c075f285edcc..e4475b6e2778df6fc750c4d04d24c2b75b2a4117 100644 (file)
@@ -1,6 +1,6 @@
-package org.asamk.signal.manager;
+package org.asamk.signal.manager.storage;
 
-import org.asamk.signal.manager.groups.GroupId;
+import org.asamk.signal.manager.api.GroupId;
 import org.asamk.signal.manager.storage.recipients.RecipientAddress;
 import org.asamk.signal.manager.util.IOUtils;
 import org.asamk.signal.manager.util.Utils;
index 5014ab6d99ea26eee41a377bf90c142cbe3d9083..850b264fb84286f91503cc0757bae779faf96d2a 100644 (file)
@@ -4,10 +4,12 @@ import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 import org.asamk.signal.manager.Settings;
+import org.asamk.signal.manager.api.Contact;
+import org.asamk.signal.manager.api.GroupId;
 import org.asamk.signal.manager.api.Pair;
+import org.asamk.signal.manager.api.Profile;
+import org.asamk.signal.manager.api.ServiceEnvironment;
 import org.asamk.signal.manager.api.TrustLevel;
-import org.asamk.signal.manager.config.ServiceEnvironment;
-import org.asamk.signal.manager.groups.GroupId;
 import org.asamk.signal.manager.helper.RecipientAddressResolver;
 import org.asamk.signal.manager.storage.configuration.ConfigurationStore;
 import org.asamk.signal.manager.storage.contacts.ContactsStore;
@@ -27,10 +29,8 @@ import org.asamk.signal.manager.storage.profiles.LegacyProfileStore;
 import org.asamk.signal.manager.storage.profiles.ProfileStore;
 import org.asamk.signal.manager.storage.protocol.LegacyJsonSignalProtocolStore;
 import org.asamk.signal.manager.storage.protocol.SignalProtocolStore;
-import org.asamk.signal.manager.storage.recipients.Contact;
 import org.asamk.signal.manager.storage.recipients.LegacyRecipientStore;
 import org.asamk.signal.manager.storage.recipients.LegacyRecipientStore2;
-import org.asamk.signal.manager.storage.recipients.Profile;
 import org.asamk.signal.manager.storage.recipients.RecipientAddress;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
 import org.asamk.signal.manager.storage.recipients.RecipientIdCreator;
index d708a41cd43e2b5cce9ba1b45072cfe7ebeef6f4..e7297c6b595380e514933ea39a81ecdd10727b0e 100644 (file)
@@ -3,7 +3,7 @@ package org.asamk.signal.manager.storage.accounts;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 import org.asamk.signal.manager.api.Pair;
-import org.asamk.signal.manager.config.ServiceEnvironment;
+import org.asamk.signal.manager.api.ServiceEnvironment;
 import org.asamk.signal.manager.storage.SignalAccount;
 import org.asamk.signal.manager.storage.Utils;
 import org.asamk.signal.manager.util.IOUtils;
index 2435c4e95151e0edd3e53a4558f546b5967765c6..05bc4e271b65208125c077068d527d91a99fd411 100644 (file)
@@ -1,7 +1,7 @@
 package org.asamk.signal.manager.storage.contacts;
 
+import org.asamk.signal.manager.api.Contact;
 import org.asamk.signal.manager.api.Pair;
-import org.asamk.signal.manager.storage.recipients.Contact;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
 
 import java.util.List;
index 3816dcc65c2f53457bef73e74c1c0c70f5659fad..a16af0ff34921959f44588d891c63043b7eff6fd 100644 (file)
@@ -1,8 +1,8 @@
 package org.asamk.signal.manager.storage.groups;
 
-import org.asamk.signal.manager.groups.GroupId;
-import org.asamk.signal.manager.groups.GroupInviteLinkUrl;
-import org.asamk.signal.manager.groups.GroupPermission;
+import org.asamk.signal.manager.api.GroupId;
+import org.asamk.signal.manager.api.GroupInviteLinkUrl;
+import org.asamk.signal.manager.api.GroupPermission;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
 import org.whispersystems.signalservice.api.push.DistributionId;
 
index ea5ae7be0a15a13b996495d02529a7e774e56e74..ba09337cb7ddbedac331fd89010367d458e80adc 100644 (file)
@@ -1,9 +1,9 @@
 package org.asamk.signal.manager.storage.groups;
 
-import org.asamk.signal.manager.groups.GroupIdV1;
-import org.asamk.signal.manager.groups.GroupIdV2;
-import org.asamk.signal.manager.groups.GroupInviteLinkUrl;
-import org.asamk.signal.manager.groups.GroupPermission;
+import org.asamk.signal.manager.api.GroupIdV1;
+import org.asamk.signal.manager.api.GroupIdV2;
+import org.asamk.signal.manager.api.GroupInviteLinkUrl;
+import org.asamk.signal.manager.api.GroupPermission;
 import org.asamk.signal.manager.groups.GroupUtils;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
 import org.whispersystems.signalservice.api.push.DistributionId;
index fca71f10e2e001e82aebe4dfe2aaf4a29105c793..3e5eac7affe308c11692e419956668bc114cf59e 100644 (file)
@@ -1,8 +1,8 @@
 package org.asamk.signal.manager.storage.groups;
 
-import org.asamk.signal.manager.groups.GroupIdV2;
-import org.asamk.signal.manager.groups.GroupInviteLinkUrl;
-import org.asamk.signal.manager.groups.GroupPermission;
+import org.asamk.signal.manager.api.GroupIdV2;
+import org.asamk.signal.manager.api.GroupInviteLinkUrl;
+import org.asamk.signal.manager.api.GroupPermission;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
 import org.asamk.signal.manager.storage.recipients.RecipientResolver;
 import org.signal.libsignal.zkgroup.groups.GroupMasterKey;
index ece7cde229cc53f777b80edb3cc5dc666e832642..0b1901055624c86298728782756bf5dd64e56434 100644 (file)
@@ -2,9 +2,9 @@ package org.asamk.signal.manager.storage.groups;
 
 import com.google.protobuf.InvalidProtocolBufferException;
 
-import org.asamk.signal.manager.groups.GroupId;
-import org.asamk.signal.manager.groups.GroupIdV1;
-import org.asamk.signal.manager.groups.GroupIdV2;
+import org.asamk.signal.manager.api.GroupId;
+import org.asamk.signal.manager.api.GroupIdV1;
+import org.asamk.signal.manager.api.GroupIdV2;
 import org.asamk.signal.manager.groups.GroupUtils;
 import org.asamk.signal.manager.storage.Database;
 import org.asamk.signal.manager.storage.Utils;
index b6205c97454bb5a8f2722e2ceb66e7b505ce1828..f004ae69883fab5cdf5e597853b5ce088f117253 100644 (file)
@@ -7,9 +7,9 @@ import com.fasterxml.jackson.databind.JsonDeserializer;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
-import org.asamk.signal.manager.groups.GroupId;
-import org.asamk.signal.manager.groups.GroupIdV1;
-import org.asamk.signal.manager.groups.GroupIdV2;
+import org.asamk.signal.manager.api.GroupId;
+import org.asamk.signal.manager.api.GroupIdV1;
+import org.asamk.signal.manager.api.GroupIdV2;
 import org.asamk.signal.manager.storage.recipients.RecipientAddress;
 import org.asamk.signal.manager.storage.recipients.RecipientResolver;
 import org.signal.libsignal.zkgroup.InvalidInputException;
index b1d89628318c1f5d828f55c639e1e067322844eb..2f8b4dac7a813d6de4a35b9fe9df9b5a59907b1a 100644 (file)
@@ -1,6 +1,7 @@
 package org.asamk.signal.manager.storage.identities;
 
 import org.asamk.signal.manager.api.TrustLevel;
+import org.asamk.signal.manager.api.TrustNewIdentity;
 import org.asamk.signal.manager.storage.Database;
 import org.asamk.signal.manager.storage.Utils;
 import org.signal.libsignal.protocol.IdentityKey;
index 9e36bf8510561c3ca5917e449d18a8f684557215..8128435dce42143f5e96db252bfd9912f5c9b7ba 100644 (file)
@@ -1,6 +1,6 @@
 package org.asamk.signal.manager.storage.profiles;
 
-import org.asamk.signal.manager.storage.recipients.Profile;
+import org.asamk.signal.manager.api.Profile;
 import org.asamk.signal.manager.storage.recipients.RecipientId;
 import org.signal.libsignal.zkgroup.profiles.ExpiringProfileKeyCredential;
 import org.signal.libsignal.zkgroup.profiles.ProfileKey;
index bd7605db2a57e24a1893f6aa3927d066547b76de..f1b771808f7429f6a76fc595112a10a771c1baa0 100644 (file)
@@ -1,5 +1,7 @@
 package org.asamk.signal.manager.storage.recipients;
 
+import org.asamk.signal.manager.api.Contact;
+import org.asamk.signal.manager.api.Profile;
 import org.asamk.signal.manager.storage.Utils;
 import org.signal.libsignal.zkgroup.InvalidInputException;
 import org.signal.libsignal.zkgroup.profiles.ExpiringProfileKeyCredential;
index 2d3c8430aaa5ee1834b905d453aee23b2f16ca01..3790ecde98e8b4285c84e2ec5788b79c5f73d87d 100644 (file)
@@ -1,5 +1,7 @@
 package org.asamk.signal.manager.storage.recipients;
 
+import org.asamk.signal.manager.api.Contact;
+import org.asamk.signal.manager.api.Profile;
 import org.signal.libsignal.zkgroup.profiles.ExpiringProfileKeyCredential;
 import org.signal.libsignal.zkgroup.profiles.ProfileKey;
 
index b8a4b39bef30e125fe392408f4cfd113d4c31ad7..9c13459b8707d39b4314341658784b59a15ff466 100644 (file)
@@ -1,6 +1,8 @@
 package org.asamk.signal.manager.storage.recipients;
 
+import org.asamk.signal.manager.api.Contact;
 import org.asamk.signal.manager.api.Pair;
+import org.asamk.signal.manager.api.Profile;
 import org.asamk.signal.manager.api.UnregisteredRecipientException;
 import org.asamk.signal.manager.storage.Database;
 import org.asamk.signal.manager.storage.Utils;
index 67ca5cd454925d54cbe3a3bbee5b33f80b087128..c7f373964919978eeb78040c160bd531a0429ad4 100644 (file)
@@ -1,6 +1,6 @@
 package org.asamk.signal.manager.storage.sendLog;
 
-import org.asamk.signal.manager.groups.GroupId;
+import org.asamk.signal.manager.api.GroupId;
 import org.whispersystems.signalservice.api.crypto.ContentHint;
 import org.whispersystems.signalservice.internal.push.SignalServiceProtos;
 
index bab0aa4fae7cc395f84008a2513642d48c30085d..d8c8f5aac4f73a1eed969e0cfd80414611091d1a 100644 (file)
@@ -1,6 +1,6 @@
 package org.asamk.signal.manager.storage.sendLog;
 
-import org.asamk.signal.manager.groups.GroupId;
+import org.asamk.signal.manager.api.GroupId;
 import org.asamk.signal.manager.groups.GroupUtils;
 import org.asamk.signal.manager.storage.Database;
 import org.asamk.signal.manager.storage.Utils;
index 5d61cab3b2f0ccd81e7b68863967e33e63e6c684..cfbfc3ccdcaf5c90fbab229a4be72227e17b0170 100644 (file)
@@ -3,7 +3,7 @@ package org.asamk.signal.manager.util;
 import com.google.protobuf.InvalidProtocolBufferException;
 
 import org.asamk.signal.manager.api.Pair;
-import org.asamk.signal.manager.storage.recipients.Profile;
+import org.asamk.signal.manager.api.Profile;
 import org.signal.libsignal.protocol.IdentityKey;
 import org.signal.libsignal.protocol.InvalidKeyException;
 import org.signal.libsignal.protocol.ecc.ECPublicKey;
index 058ae6bb6936484ae588c8084e2a3a737c5de23a..e8c30a97531ec7c749cbebd04919d2b47d6210c9 100644 (file)
@@ -27,9 +27,8 @@ import org.asamk.signal.manager.Settings;
 import org.asamk.signal.manager.SignalAccountFiles;
 import org.asamk.signal.manager.api.AccountCheckException;
 import org.asamk.signal.manager.api.NotRegisteredException;
-import org.asamk.signal.manager.config.ServiceConfig;
-import org.asamk.signal.manager.config.ServiceEnvironment;
-import org.asamk.signal.manager.storage.identities.TrustNewIdentity;
+import org.asamk.signal.manager.api.ServiceEnvironment;
+import org.asamk.signal.manager.api.TrustNewIdentity;
 import org.asamk.signal.output.JsonWriterImpl;
 import org.asamk.signal.output.OutputWriter;
 import org.asamk.signal.output.PlainTextWriterImpl;
@@ -150,7 +149,7 @@ public class App {
             return;
         }
 
-        if (!ServiceConfig.isSignalClientAvailable()) {
+        if (!Manager.isSignalClientAvailable()) {
             throw new UserErrorException("Missing required native library dependency: libsignal-client");
         }
 
index c299ae3892b222403c77bf37da0f704ea378dc4d..faea75dcbe0858b648809f56f117d0a17e6cc6fe 100644 (file)
@@ -1,12 +1,12 @@
 package org.asamk.signal;
 
 import org.asamk.signal.manager.Manager;
+import org.asamk.signal.manager.api.GroupId;
 import org.asamk.signal.manager.api.MessageEnvelope;
 import org.asamk.signal.manager.api.RecipientAddress;
 import org.asamk.signal.manager.api.RecipientIdentifier;
 import org.asamk.signal.manager.api.TextStyle;
 import org.asamk.signal.manager.api.UntrustedIdentityException;
-import org.asamk.signal.manager.groups.GroupId;
 import org.asamk.signal.output.PlainTextWriter;
 import org.asamk.signal.util.DateUtils;
 import org.asamk.signal.util.Hex;
index 682ff63f15bf4f0541c261378b0b35010e3cfdd0..2a8c4f50e67a658321d998753b73e4e3ab0c8cdb 100644 (file)
@@ -7,9 +7,9 @@ import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.UnexpectedErrorException;
 import org.asamk.signal.commands.exceptions.UserErrorException;
 import org.asamk.signal.manager.Manager;
+import org.asamk.signal.manager.api.GroupNotFoundException;
 import org.asamk.signal.manager.api.NotPrimaryDeviceException;
 import org.asamk.signal.manager.api.UnregisteredRecipientException;
-import org.asamk.signal.manager.groups.GroupNotFoundException;
 import org.asamk.signal.output.OutputWriter;
 import org.asamk.signal.util.CommandUtil;
 import org.slf4j.Logger;
index 5e3461b7a6c3ddb079914cc563a0af91fc026089..3c3562ae4f97791927c84bdbf4954261d07f4935 100644 (file)
@@ -8,9 +8,9 @@ import org.asamk.signal.commands.exceptions.IOErrorException;
 import org.asamk.signal.commands.exceptions.UnexpectedErrorException;
 import org.asamk.signal.commands.exceptions.UserErrorException;
 import org.asamk.signal.manager.Manager;
+import org.asamk.signal.manager.api.GroupInviteLinkUrl;
 import org.asamk.signal.manager.api.InactiveGroupLinkException;
 import org.asamk.signal.manager.api.PendingAdminApprovalException;
-import org.asamk.signal.manager.groups.GroupInviteLinkUrl;
 import org.asamk.signal.output.JsonWriter;
 import org.asamk.signal.output.OutputWriter;
 import org.asamk.signal.output.PlainTextWriter;
index e3b978b1eec44983b722a1f567314806c660a9f7..997e31dd5b6af41c50f376a736e2e2c0b0ed2db6 100644 (file)
@@ -6,8 +6,8 @@ import net.sourceforge.argparse4j.inf.Subparser;
 
 import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.manager.Manager;
-import org.asamk.signal.manager.storage.recipients.Contact;
-import org.asamk.signal.manager.storage.recipients.Profile;
+import org.asamk.signal.manager.api.Contact;
+import org.asamk.signal.manager.api.Profile;
 import org.asamk.signal.output.JsonWriter;
 import org.asamk.signal.output.OutputWriter;
 import org.asamk.signal.output.PlainTextWriter;
index 201451eee0074a811a4972ebfbcc76b3c717b1fc..ca745b32d9388451e010182fde2073ab69584c45 100644 (file)
@@ -8,10 +8,10 @@ import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.IOErrorException;
 import org.asamk.signal.commands.exceptions.UserErrorException;
 import org.asamk.signal.manager.Manager;
+import org.asamk.signal.manager.api.GroupNotFoundException;
+import org.asamk.signal.manager.api.LastGroupAdminException;
+import org.asamk.signal.manager.api.NotAGroupMemberException;
 import org.asamk.signal.manager.api.UnregisteredRecipientException;
-import org.asamk.signal.manager.groups.GroupNotFoundException;
-import org.asamk.signal.manager.groups.LastGroupAdminException;
-import org.asamk.signal.manager.groups.NotAGroupMemberException;
 import org.asamk.signal.output.OutputWriter;
 import org.asamk.signal.util.CommandUtil;
 import org.slf4j.Logger;
index 85d2dcd4a5e06d8bda63028429568fbd92eefef1..294fd7c5cd0f4e24cdeb06de61e836c108790e35 100644 (file)
@@ -8,9 +8,9 @@ import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.UnexpectedErrorException;
 import org.asamk.signal.commands.exceptions.UserErrorException;
 import org.asamk.signal.manager.Manager;
-import org.asamk.signal.manager.groups.GroupNotFoundException;
-import org.asamk.signal.manager.groups.GroupSendingNotAllowedException;
-import org.asamk.signal.manager.groups.NotAGroupMemberException;
+import org.asamk.signal.manager.api.GroupNotFoundException;
+import org.asamk.signal.manager.api.GroupSendingNotAllowedException;
+import org.asamk.signal.manager.api.NotAGroupMemberException;
 import org.asamk.signal.output.OutputWriter;
 import org.asamk.signal.util.CommandUtil;
 
index 33777167189c3d8a97879ca29a3794cadba20912..56a26253081b58c0b741e14dcc25a93d45a4f7ed 100644 (file)
@@ -9,14 +9,14 @@ import org.asamk.signal.commands.exceptions.UnexpectedErrorException;
 import org.asamk.signal.commands.exceptions.UserErrorException;
 import org.asamk.signal.manager.Manager;
 import org.asamk.signal.manager.api.AttachmentInvalidException;
+import org.asamk.signal.manager.api.GroupNotFoundException;
+import org.asamk.signal.manager.api.GroupSendingNotAllowedException;
 import org.asamk.signal.manager.api.InvalidStickerException;
 import org.asamk.signal.manager.api.Message;
+import org.asamk.signal.manager.api.NotAGroupMemberException;
 import org.asamk.signal.manager.api.RecipientIdentifier;
 import org.asamk.signal.manager.api.TextStyle;
 import org.asamk.signal.manager.api.UnregisteredRecipientException;
-import org.asamk.signal.manager.groups.GroupNotFoundException;
-import org.asamk.signal.manager.groups.GroupSendingNotAllowedException;
-import org.asamk.signal.manager.groups.NotAGroupMemberException;
 import org.asamk.signal.output.OutputWriter;
 import org.asamk.signal.util.CommandUtil;
 import org.asamk.signal.util.Hex;
index a844fabf474f9593d2850ccf2832cfb33021304d..0eafc2fd4768a1b0da76afa21c106bddf33a1e47 100644 (file)
@@ -8,10 +8,10 @@ import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.UnexpectedErrorException;
 import org.asamk.signal.commands.exceptions.UserErrorException;
 import org.asamk.signal.manager.Manager;
+import org.asamk.signal.manager.api.GroupNotFoundException;
+import org.asamk.signal.manager.api.GroupSendingNotAllowedException;
+import org.asamk.signal.manager.api.NotAGroupMemberException;
 import org.asamk.signal.manager.api.UnregisteredRecipientException;
-import org.asamk.signal.manager.groups.GroupNotFoundException;
-import org.asamk.signal.manager.groups.GroupSendingNotAllowedException;
-import org.asamk.signal.manager.groups.NotAGroupMemberException;
 import org.asamk.signal.output.OutputWriter;
 import org.asamk.signal.util.CommandUtil;
 
index 4a2a038ca00b835b583c558eb56f7e96a20c2c72..9293ec6ad4d3c501d339f6444f9b23270736d778 100644 (file)
@@ -7,11 +7,11 @@ import net.sourceforge.argparse4j.inf.Subparser;
 import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.UserErrorException;
 import org.asamk.signal.manager.Manager;
+import org.asamk.signal.manager.api.GroupNotFoundException;
+import org.asamk.signal.manager.api.GroupSendingNotAllowedException;
+import org.asamk.signal.manager.api.NotAGroupMemberException;
 import org.asamk.signal.manager.api.RecipientIdentifier;
 import org.asamk.signal.manager.api.TypingAction;
-import org.asamk.signal.manager.groups.GroupNotFoundException;
-import org.asamk.signal.manager.groups.GroupSendingNotAllowedException;
-import org.asamk.signal.manager.groups.NotAGroupMemberException;
 import org.asamk.signal.output.OutputWriter;
 import org.asamk.signal.util.CommandUtil;
 
index 9ff018bba96ecdc925e02b519fa0dff013d64afa..a7a8b6d7ef4d81766c5e35f89b39bf2cb986f426 100644 (file)
@@ -7,9 +7,9 @@ import org.asamk.signal.commands.exceptions.CommandException;
 import org.asamk.signal.commands.exceptions.UnexpectedErrorException;
 import org.asamk.signal.commands.exceptions.UserErrorException;
 import org.asamk.signal.manager.Manager;
+import org.asamk.signal.manager.api.GroupNotFoundException;
 import org.asamk.signal.manager.api.NotPrimaryDeviceException;
 import org.asamk.signal.manager.api.UnregisteredRecipientException;
-import org.asamk.signal.manager.groups.GroupNotFoundException;
 import org.asamk.signal.output.OutputWriter;
 import org.asamk.signal.util.CommandUtil;
 import org.slf4j.Logger;
index 14ad14f8fe085929e10e34e2fe808b59d9ce782f..1f7825fb84a671fd8b7e4feacc65e7885174ffd7 100644 (file)
@@ -9,15 +9,15 @@ import org.asamk.signal.commands.exceptions.UnexpectedErrorException;
 import org.asamk.signal.commands.exceptions.UserErrorException;
 import org.asamk.signal.manager.Manager;
 import org.asamk.signal.manager.api.AttachmentInvalidException;
+import org.asamk.signal.manager.api.GroupId;
+import org.asamk.signal.manager.api.GroupLinkState;
+import org.asamk.signal.manager.api.GroupNotFoundException;
+import org.asamk.signal.manager.api.GroupPermission;
+import org.asamk.signal.manager.api.GroupSendingNotAllowedException;
+import org.asamk.signal.manager.api.NotAGroupMemberException;
 import org.asamk.signal.manager.api.SendGroupMessageResults;
 import org.asamk.signal.manager.api.UnregisteredRecipientException;
 import org.asamk.signal.manager.api.UpdateGroup;
-import org.asamk.signal.manager.groups.GroupId;
-import org.asamk.signal.manager.groups.GroupLinkState;
-import org.asamk.signal.manager.groups.GroupNotFoundException;
-import org.asamk.signal.manager.groups.GroupPermission;
-import org.asamk.signal.manager.groups.GroupSendingNotAllowedException;
-import org.asamk.signal.manager.groups.NotAGroupMemberException;
 import org.asamk.signal.output.JsonWriter;
 import org.asamk.signal.output.OutputWriter;
 import org.asamk.signal.output.PlainTextWriter;
index e5f64ab3ada6d7415d3bd378e7a3550540fa4425..1873bfd02bf9cf2940645e6d2aad1a0b67fa33f2 100644 (file)
@@ -5,15 +5,23 @@ import org.asamk.signal.DbusConfig;
 import org.asamk.signal.manager.Manager;
 import org.asamk.signal.manager.api.AttachmentInvalidException;
 import org.asamk.signal.manager.api.Configuration;
+import org.asamk.signal.manager.api.Contact;
 import org.asamk.signal.manager.api.Device;
 import org.asamk.signal.manager.api.Group;
+import org.asamk.signal.manager.api.GroupId;
+import org.asamk.signal.manager.api.GroupInviteLinkUrl;
+import org.asamk.signal.manager.api.GroupNotFoundException;
+import org.asamk.signal.manager.api.GroupPermission;
+import org.asamk.signal.manager.api.GroupSendingNotAllowedException;
 import org.asamk.signal.manager.api.Identity;
 import org.asamk.signal.manager.api.InactiveGroupLinkException;
 import org.asamk.signal.manager.api.InvalidDeviceLinkException;
 import org.asamk.signal.manager.api.InvalidStickerException;
 import org.asamk.signal.manager.api.InvalidUsernameException;
+import org.asamk.signal.manager.api.LastGroupAdminException;
 import org.asamk.signal.manager.api.Message;
 import org.asamk.signal.manager.api.MessageEnvelope;
+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.ReceiveConfig;
@@ -30,14 +38,6 @@ import org.asamk.signal.manager.api.UnregisteredRecipientException;
 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.groups.GroupId;
-import org.asamk.signal.manager.groups.GroupInviteLinkUrl;
-import org.asamk.signal.manager.groups.GroupNotFoundException;
-import org.asamk.signal.manager.groups.GroupPermission;
-import org.asamk.signal.manager.groups.GroupSendingNotAllowedException;
-import org.asamk.signal.manager.groups.LastGroupAdminException;
-import org.asamk.signal.manager.groups.NotAGroupMemberException;
-import org.asamk.signal.manager.storage.recipients.Contact;
 import org.freedesktop.dbus.DBusMap;
 import org.freedesktop.dbus.DBusPath;
 import org.freedesktop.dbus.connections.impl.DBusConnection;
index 66c1fd6566e9602fe18c4b1af798e6465cbb9e79..3176620d539a6071142ad06f1b04358d0ffee5f0 100644 (file)
@@ -2,9 +2,9 @@ package org.asamk.signal.dbus;
 
 import org.asamk.Signal;
 import org.asamk.signal.manager.Manager;
+import org.asamk.signal.manager.api.GroupId;
 import org.asamk.signal.manager.api.MessageEnvelope;
 import org.asamk.signal.manager.api.RecipientAddress;
-import org.asamk.signal.manager.groups.GroupId;
 import org.freedesktop.dbus.connections.impl.DBusConnection;
 import org.freedesktop.dbus.exceptions.DBusException;
 import org.freedesktop.dbus.types.Variant;
index f91f8001746b1493a36305579894ffaa8126c1ff..db7253bdd511fa3fa69900d1013cb1e69320e49e 100644 (file)
@@ -4,11 +4,19 @@ import org.asamk.Signal;
 import org.asamk.signal.BaseConfig;
 import org.asamk.signal.manager.Manager;
 import org.asamk.signal.manager.api.AttachmentInvalidException;
+import org.asamk.signal.manager.api.GroupId;
+import org.asamk.signal.manager.api.GroupInviteLinkUrl;
+import org.asamk.signal.manager.api.GroupLinkState;
+import org.asamk.signal.manager.api.GroupNotFoundException;
+import org.asamk.signal.manager.api.GroupPermission;
+import org.asamk.signal.manager.api.GroupSendingNotAllowedException;
 import org.asamk.signal.manager.api.InactiveGroupLinkException;
 import org.asamk.signal.manager.api.InvalidDeviceLinkException;
 import org.asamk.signal.manager.api.InvalidNumberException;
 import org.asamk.signal.manager.api.InvalidStickerException;
+import org.asamk.signal.manager.api.LastGroupAdminException;
 import org.asamk.signal.manager.api.Message;
+import org.asamk.signal.manager.api.NotAGroupMemberException;
 import org.asamk.signal.manager.api.NotPrimaryDeviceException;
 import org.asamk.signal.manager.api.PendingAdminApprovalException;
 import org.asamk.signal.manager.api.RecipientAddress;
@@ -21,14 +29,6 @@ import org.asamk.signal.manager.api.UnregisteredRecipientException;
 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.groups.GroupId;
-import org.asamk.signal.manager.groups.GroupInviteLinkUrl;
-import org.asamk.signal.manager.groups.GroupLinkState;
-import org.asamk.signal.manager.groups.GroupNotFoundException;
-import org.asamk.signal.manager.groups.GroupPermission;
-import org.asamk.signal.manager.groups.GroupSendingNotAllowedException;
-import org.asamk.signal.manager.groups.LastGroupAdminException;
-import org.asamk.signal.manager.groups.NotAGroupMemberException;
 import org.asamk.signal.util.SendMessageResultUtils;
 import org.freedesktop.dbus.DBusPath;
 import org.freedesktop.dbus.connections.impl.DBusConnection;
index f7d06b154dd73e7950979a832b9c4113b53b910b..39e7f51eaa87e363242c2ece255993e21a984f85 100644 (file)
@@ -13,7 +13,6 @@ import org.asamk.signal.jsonrpc.SignalJsonRpcCommandHandler;
 import org.asamk.signal.manager.Manager;
 import org.asamk.signal.manager.MultiAccountManager;
 import org.asamk.signal.manager.api.Pair;
-import org.asamk.signal.manager.util.Utils;
 import org.asamk.signal.util.Util;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -138,7 +137,7 @@ public class HttpServerHandler {
 
         try {
             final var queryString = httpExchange.getRequestURI().getQuery();
-            final var query = queryString == null ? Map.<String, String>of() : Utils.getQueryMap(queryString);
+            final var query = queryString == null ? Map.<String, String>of() : Util.getQueryMap(queryString);
 
             List<Manager> managers = getManagerFromQuery(query);
             if (managers == null) {
index dd7f235f7be88d65d3f8136089e0c90e94ac8d5b..13b953fcee40a3bd31ffee74a4f08c45bb05f019 100644 (file)
@@ -2,8 +2,8 @@ package org.asamk.signal.json;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
 
+import org.asamk.signal.manager.api.GroupId;
 import org.asamk.signal.manager.api.SendMessageResult;
-import org.asamk.signal.manager.groups.GroupId;
 
 public record JsonSendMessageResult(
         JsonRecipientAddress recipientAddress,
index 012df53d815a8b1ab159b50c115f2a55b65d1cdb..c1ca61441a5e8fa204ffe80c20b3c35a8bd5af1b 100644 (file)
@@ -3,8 +3,8 @@ package org.asamk.signal.json;
 import com.fasterxml.jackson.annotation.JsonInclude;
 
 import org.asamk.signal.manager.api.Color;
+import org.asamk.signal.manager.api.GroupId;
 import org.asamk.signal.manager.api.MessageEnvelope;
-import org.asamk.signal.manager.groups.GroupId;
 
 import java.util.List;
 
index 802c07d59862e457746de6f2fcb269b7314ee222..98c3571e4f1935035bb7b583ddeccafbd61fd29f 100644 (file)
@@ -2,9 +2,9 @@ package org.asamk.signal.json;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
 
+import org.asamk.signal.manager.api.GroupId;
 import org.asamk.signal.manager.api.MessageEnvelope;
 import org.asamk.signal.manager.api.RecipientAddress;
-import org.asamk.signal.manager.groups.GroupId;
 
 import java.util.List;
 
index 0df82b1c764ac74013aa0ddcf6827ba9e051613c..79a66d3491f043313ffce2b47860eab827f6de84 100644 (file)
@@ -2,8 +2,8 @@ package org.asamk.signal.json;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
 
+import org.asamk.signal.manager.api.GroupId;
 import org.asamk.signal.manager.api.MessageEnvelope;
-import org.asamk.signal.manager.groups.GroupId;
 
 record JsonTypingMessage(
         String action, long timestamp, @JsonInclude(JsonInclude.Include.NON_NULL) String groupId
index b86a99894328acc744fac71190f7f29d13803163..311b78afceb533303415a04e1dceed7c166a5fe6 100644 (file)
@@ -2,10 +2,10 @@ package org.asamk.signal.util;
 
 import org.asamk.signal.commands.exceptions.UserErrorException;
 import org.asamk.signal.manager.Manager;
+import org.asamk.signal.manager.api.GroupId;
+import org.asamk.signal.manager.api.GroupIdFormatException;
 import org.asamk.signal.manager.api.InvalidNumberException;
 import org.asamk.signal.manager.api.RecipientIdentifier;
-import org.asamk.signal.manager.groups.GroupId;
-import org.asamk.signal.manager.groups.GroupIdFormatException;
 
 import java.util.Collection;
 import java.util.HashSet;
index c844e2ea910787f5cccdf1e7c18ff1d464cd7153..338c986ab9b071567fd110b64d5228e454bc2155 100644 (file)
@@ -5,9 +5,13 @@ import com.fasterxml.jackson.annotation.PropertyAccessor;
 import com.fasterxml.jackson.core.JsonGenerator;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
+import java.net.URLDecoder;
+import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
+import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
@@ -63,4 +67,17 @@ public class Util {
         objectMapper.disable(JsonGenerator.Feature.AUTO_CLOSE_TARGET);
         return objectMapper;
     }
+
+    public static Map<String, String> getQueryMap(String query) {
+        var params = query.split("&");
+        var map = new HashMap<String, String>();
+        for (var param : params) {
+            final var paramParts = param.split("=");
+            var name = URLDecoder.decode(paramParts[0], StandardCharsets.UTF_8);
+            var value = paramParts.length == 1 ? null : URLDecoder.decode(paramParts[1], StandardCharsets.UTF_8);
+            map.put(name, value);
+        }
+        return map;
+    }
+
 }