]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/config/ServiceConfig.java
Update gradle
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / config / ServiceConfig.java
1 package org.asamk.signal.manager.config;
2
3 import org.asamk.signal.manager.api.ServiceEnvironment;
4 import org.signal.libsignal.protocol.util.Medium;
5 import org.whispersystems.signalservice.api.account.AccountAttributes;
6
7 import java.util.List;
8 import java.util.concurrent.TimeUnit;
9
10 import okhttp3.Interceptor;
11
12 public class ServiceConfig {
13
14 public static final int PREKEY_MINIMUM_COUNT = 10;
15 public static final int PREKEY_BATCH_SIZE = 100;
16 public static final int PREKEY_MAXIMUM_ID = Medium.MAX_VALUE;
17 public static final long PREKEY_ARCHIVE_AGE = TimeUnit.DAYS.toMillis(30);
18 public static final long PREKEY_STALE_AGE = TimeUnit.DAYS.toMillis(90);
19 public static final long SIGNED_PREKEY_ROTATE_AGE = TimeUnit.DAYS.toMillis(2);
20
21 public static final int MAX_ATTACHMENT_SIZE = 150 * 1024 * 1024;
22 public static final long MAX_ENVELOPE_SIZE = 0;
23 public static final int MAX_MESSAGE_SIZE_BYTES = 2000;
24 public static final long AVATAR_DOWNLOAD_FAILSAFE_MAX_SIZE = 10 * 1024 * 1024;
25 public static final boolean AUTOMATIC_NETWORK_RETRY = true;
26 public static final int GROUP_MAX_SIZE = 1001;
27 public static final int MAXIMUM_ONE_OFF_REQUEST_SIZE = 3;
28 public static final long UNREGISTERED_LIFESPAN = TimeUnit.DAYS.toMillis(30);
29
30 public static AccountAttributes.Capabilities getCapabilities(boolean isPrimaryDevice) {
31 final var deleteSync = !isPrimaryDevice;
32 final var storageEncryptionV2 = !isPrimaryDevice;
33 final var attachmentBackfill = !isPrimaryDevice;
34 return new AccountAttributes.Capabilities(true, deleteSync, true, storageEncryptionV2, attachmentBackfill);
35 }
36
37 public static ServiceEnvironmentConfig getServiceEnvironmentConfig(
38 ServiceEnvironment serviceEnvironment,
39 String userAgent
40 ) {
41 final Interceptor userAgentInterceptor = chain -> chain.proceed(chain.request()
42 .newBuilder()
43 .header("User-Agent", userAgent)
44 .build());
45
46 final var interceptors = List.of(userAgentInterceptor);
47
48 return switch (serviceEnvironment) {
49 case LIVE -> LiveConfig.getServiceEnvironmentConfig(interceptors);
50 case STAGING -> StagingConfig.getServiceEnvironmentConfig(interceptors);
51 };
52 }
53 }