]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/config/ServiceConfig.java
e827e3f559de34f4873358eb44346a1d155a182d
[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 long AVATAR_DOWNLOAD_FAILSAFE_MAX_SIZE = 10 * 1024 * 1024;
24 public static final boolean AUTOMATIC_NETWORK_RETRY = true;
25 public static final int GROUP_MAX_SIZE = 1001;
26 public static final int MAXIMUM_ONE_OFF_REQUEST_SIZE = 3;
27 public static final long UNREGISTERED_LIFESPAN = TimeUnit.DAYS.toMillis(30);
28
29 public static AccountAttributes.Capabilities getCapabilities(boolean isPrimaryDevice) {
30 final var giftBadges = !isPrimaryDevice;
31 final var pni = !isPrimaryDevice;
32 final var paymentActivation = !isPrimaryDevice;
33 final var deleteSync = !isPrimaryDevice;
34 return new AccountAttributes.Capabilities(true,
35 true,
36 true,
37 true,
38 true,
39 giftBadges,
40 pni,
41 paymentActivation,
42 deleteSync);
43 }
44
45 public static ServiceEnvironmentConfig getServiceEnvironmentConfig(
46 ServiceEnvironment serviceEnvironment, String userAgent
47 ) {
48 final Interceptor userAgentInterceptor = chain -> chain.proceed(chain.request()
49 .newBuilder()
50 .header("User-Agent", userAgent)
51 .build());
52
53 final var interceptors = List.of(userAgentInterceptor);
54
55 return switch (serviceEnvironment) {
56 case LIVE -> LiveConfig.getServiceEnvironmentConfig(interceptors);
57 case STAGING -> StagingConfig.getServiceEnvironmentConfig(interceptors);
58 };
59 }
60 }