diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 97a7a3ba11..2db84fab2b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -597,6 +597,7 @@ dependencies { implementation(project(":lib:archive")) implementation(project(":lib:libsignal-service")) + implementation(project(":lib:network")) implementation(project(":lib:paging")) implementation(project(":core:util")) implementation(project(":lib:glide")) diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/dependencies/InstrumentationApplicationDependencyProvider.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/dependencies/InstrumentationApplicationDependencyProvider.kt index ba84a9125c..fec6022c9c 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/dependencies/InstrumentationApplicationDependencyProvider.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/dependencies/InstrumentationApplicationDependencyProvider.kt @@ -4,12 +4,12 @@ import android.app.Application import io.mockk.mockk import io.mockk.spyk import org.signal.core.util.billing.BillingApi +import org.signal.network.api.ArchiveApi import org.thoughtcrime.securesms.push.SignalServiceNetworkAccess import org.thoughtcrime.securesms.recipients.LiveRecipientCache import org.whispersystems.signalservice.api.SignalServiceDataStore import org.whispersystems.signalservice.api.SignalServiceMessageSender import org.whispersystems.signalservice.api.account.AccountApi -import org.whispersystems.signalservice.api.archive.ArchiveApi import org.whispersystems.signalservice.api.attachment.AttachmentApi import org.whispersystems.signalservice.api.donations.DonationsApi import org.whispersystems.signalservice.api.keys.KeysApi diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt index cbf0bd89d1..3f2dbe1d2c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/BackupRepository.kt @@ -66,6 +66,7 @@ import org.signal.libsignal.messagebackup.BackupForwardSecrecyToken import org.signal.libsignal.zkgroup.VerificationFailedException import org.signal.libsignal.zkgroup.backups.BackupLevel import org.signal.libsignal.zkgroup.profiles.ProfileKey +import org.signal.network.api.SvrBApi import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.attachments.AttachmentId import org.thoughtcrime.securesms.attachments.Cdn @@ -161,7 +162,6 @@ import org.whispersystems.signalservice.api.link.TransferArchiveResponse import org.whispersystems.signalservice.api.messages.AttachmentTransferProgress import org.whispersystems.signalservice.api.messages.SignalServiceAttachment.ProgressListener import org.whispersystems.signalservice.api.push.exceptions.NonSuccessfulResponseCodeException -import org.whispersystems.signalservice.api.svr.SvrBApi import org.whispersystems.signalservice.internal.crypto.PaddingInputStream import org.whispersystems.signalservice.internal.push.AttachmentUploadForm import org.whispersystems.signalservice.internal.push.AuthCredentials @@ -2094,7 +2094,7 @@ object BackupRepository { } /** - * See [org.whispersystems.signalservice.api.archive.ArchiveApi.getSvrBAuthorization]. + * See [org.signal.network.api.ArchiveApi.getSvrBAuthorization]. */ fun getSvrBAuth(): NetworkResult { return initBackupAndFetchAuth() diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundViewModel.kt index 6acde0ca07..4218f89b26 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/internal/backup/InternalBackupPlaygroundViewModel.kt @@ -37,6 +37,7 @@ import org.signal.core.util.readNBytesOrThrow import org.signal.core.util.roundedString import org.signal.core.util.stream.LimitedInputStream import org.signal.libsignal.zkgroup.profiles.ProfileKey +import org.signal.network.api.SvrBApi import org.thoughtcrime.securesms.attachments.AttachmentId import org.thoughtcrime.securesms.attachments.DatabaseAttachment import org.thoughtcrime.securesms.backup.ArchiveUploadProgress @@ -58,7 +59,6 @@ import org.thoughtcrime.securesms.net.SignalNetwork import org.thoughtcrime.securesms.providers.BlobProvider import org.thoughtcrime.securesms.recipients.Recipient import org.whispersystems.signalservice.api.NetworkResult -import org.whispersystems.signalservice.api.svr.SvrBApi import java.io.FileOutputStream import java.io.IOException import java.io.InputStream diff --git a/app/src/main/java/org/thoughtcrime/securesms/dependencies/AppDependencies.kt b/app/src/main/java/org/thoughtcrime/securesms/dependencies/AppDependencies.kt index e9f1639bd5..3908b098e4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/dependencies/AppDependencies.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/dependencies/AppDependencies.kt @@ -16,6 +16,17 @@ import org.signal.libsignal.net.Network import org.signal.libsignal.zkgroup.profiles.ClientZkProfileOperations import org.signal.libsignal.zkgroup.receipts.ClientZkReceiptOperations import org.signal.mediasend.MediaSendDependencies +import org.signal.network.api.ArchiveApi +import org.signal.network.api.CallingApi +import org.signal.network.api.CdsApi +import org.signal.network.api.CertificateApi +import org.signal.network.api.LinkDeviceApi +import org.signal.network.api.PaymentsApi +import org.signal.network.api.ProvisioningApi +import org.signal.network.api.RateLimitChallengeApi +import org.signal.network.api.RemoteConfigApi +import org.signal.network.api.SvrBApi +import org.signal.network.api.UsernameApi import org.thoughtcrime.securesms.BuildConfig import org.thoughtcrime.securesms.components.TypingStatusRepository import org.thoughtcrime.securesms.components.TypingStatusSender @@ -52,27 +63,16 @@ import org.whispersystems.signalservice.api.SignalServiceDataStore import org.whispersystems.signalservice.api.SignalServiceMessageReceiver import org.whispersystems.signalservice.api.SignalServiceMessageSender import org.whispersystems.signalservice.api.account.AccountApi -import org.whispersystems.signalservice.api.archive.ArchiveApi import org.whispersystems.signalservice.api.attachment.AttachmentApi -import org.whispersystems.signalservice.api.calling.CallingApi -import org.whispersystems.signalservice.api.cds.CdsApi -import org.whispersystems.signalservice.api.certificate.CertificateApi import org.whispersystems.signalservice.api.donations.DonationsApi import org.whispersystems.signalservice.api.groupsv2.GroupsV2Operations import org.whispersystems.signalservice.api.keys.KeysApi -import org.whispersystems.signalservice.api.link.LinkDeviceApi import org.whispersystems.signalservice.api.message.MessageApi -import org.whispersystems.signalservice.api.payments.PaymentsApi import org.whispersystems.signalservice.api.profiles.ProfileApi -import org.whispersystems.signalservice.api.provisioning.ProvisioningApi -import org.whispersystems.signalservice.api.ratelimit.RateLimitChallengeApi import org.whispersystems.signalservice.api.registration.RegistrationApi -import org.whispersystems.signalservice.api.remoteconfig.RemoteConfigApi import org.whispersystems.signalservice.api.services.DonationsService import org.whispersystems.signalservice.api.services.ProfileService import org.whispersystems.signalservice.api.storage.StorageServiceApi -import org.whispersystems.signalservice.api.svr.SvrBApi -import org.whispersystems.signalservice.api.username.UsernameApi import org.whispersystems.signalservice.api.websocket.SignalWebSocket import org.whispersystems.signalservice.api.websocket.WebSocketConnectionState import org.whispersystems.signalservice.internal.configuration.HttpProxy diff --git a/app/src/main/java/org/thoughtcrime/securesms/dependencies/ApplicationDependencyProvider.java b/app/src/main/java/org/thoughtcrime/securesms/dependencies/ApplicationDependencyProvider.java index d94086961a..430084bad6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/dependencies/ApplicationDependencyProvider.java +++ b/app/src/main/java/org/thoughtcrime/securesms/dependencies/ApplicationDependencyProvider.java @@ -89,30 +89,30 @@ import org.whispersystems.signalservice.api.SignalServiceDataStore; import org.whispersystems.signalservice.api.SignalServiceMessageReceiver; import org.whispersystems.signalservice.api.SignalServiceMessageSender; import org.whispersystems.signalservice.api.account.AccountApi; -import org.whispersystems.signalservice.api.archive.ArchiveApi; +import org.signal.network.api.ArchiveApi; import org.whispersystems.signalservice.api.attachment.AttachmentApi; -import org.whispersystems.signalservice.api.calling.CallingApi; -import org.whispersystems.signalservice.api.cds.CdsApi; -import org.whispersystems.signalservice.api.certificate.CertificateApi; +import org.signal.network.api.CallingApi; +import org.signal.network.api.CdsApi; +import org.signal.network.api.CertificateApi; import org.whispersystems.signalservice.api.donations.DonationsApi; import org.whispersystems.signalservice.api.groupsv2.ClientZkOperations; import org.whispersystems.signalservice.api.groupsv2.GroupsV2Operations; import org.whispersystems.signalservice.api.keys.KeysApi; -import org.whispersystems.signalservice.api.link.LinkDeviceApi; +import org.signal.network.api.LinkDeviceApi; import org.whispersystems.signalservice.api.message.MessageApi; -import org.whispersystems.signalservice.api.payments.PaymentsApi; +import org.signal.network.api.PaymentsApi; import org.whispersystems.signalservice.api.profiles.ProfileApi; -import org.whispersystems.signalservice.api.provisioning.ProvisioningApi; +import org.signal.network.api.ProvisioningApi; import org.signal.core.models.ServiceId.ACI; import org.signal.core.models.ServiceId.PNI; -import org.whispersystems.signalservice.api.ratelimit.RateLimitChallengeApi; +import org.signal.network.api.RateLimitChallengeApi; import org.whispersystems.signalservice.api.registration.RegistrationApi; -import org.whispersystems.signalservice.api.remoteconfig.RemoteConfigApi; +import org.signal.network.api.RemoteConfigApi; import org.whispersystems.signalservice.api.services.DonationsService; import org.whispersystems.signalservice.api.services.ProfileService; import org.whispersystems.signalservice.api.storage.StorageServiceApi; -import org.whispersystems.signalservice.api.svr.SvrBApi; -import org.whispersystems.signalservice.api.username.UsernameApi; +import org.signal.network.api.SvrBApi; +import org.signal.network.api.UsernameApi; import org.whispersystems.signalservice.api.util.CredentialsProvider; import org.whispersystems.signalservice.api.util.SleepTimer; import org.whispersystems.signalservice.api.util.UptimeSleepTimer; diff --git a/app/src/main/java/org/thoughtcrime/securesms/dependencies/NetworkDependenciesModule.kt b/app/src/main/java/org/thoughtcrime/securesms/dependencies/NetworkDependenciesModule.kt index 321ad36ada..f358593bfe 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/dependencies/NetworkDependenciesModule.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/dependencies/NetworkDependenciesModule.kt @@ -16,6 +16,17 @@ import org.signal.core.util.orNull import org.signal.core.util.resettableLazy import org.signal.libsignal.net.Network import org.signal.libsignal.zkgroup.receipts.ClientZkReceiptOperations +import org.signal.network.api.ArchiveApi +import org.signal.network.api.CallingApi +import org.signal.network.api.CdsApi +import org.signal.network.api.CertificateApi +import org.signal.network.api.LinkDeviceApi +import org.signal.network.api.PaymentsApi +import org.signal.network.api.ProvisioningApi +import org.signal.network.api.RateLimitChallengeApi +import org.signal.network.api.RemoteConfigApi +import org.signal.network.api.SvrBApi +import org.signal.network.api.UsernameApi import org.thoughtcrime.securesms.crypto.storage.SignalServiceDataStoreImpl import org.thoughtcrime.securesms.groups.GroupsV2Authorization import org.thoughtcrime.securesms.groups.GroupsV2AuthorizationMemoryValueCache @@ -29,28 +40,17 @@ import org.whispersystems.signalservice.api.SignalServiceAccountManager import org.whispersystems.signalservice.api.SignalServiceMessageReceiver import org.whispersystems.signalservice.api.SignalServiceMessageSender import org.whispersystems.signalservice.api.account.AccountApi -import org.whispersystems.signalservice.api.archive.ArchiveApi import org.whispersystems.signalservice.api.attachment.AttachmentApi -import org.whispersystems.signalservice.api.calling.CallingApi -import org.whispersystems.signalservice.api.cds.CdsApi -import org.whispersystems.signalservice.api.certificate.CertificateApi import org.whispersystems.signalservice.api.donations.DonationsApi import org.whispersystems.signalservice.api.groupsv2.GroupsV2Operations import org.whispersystems.signalservice.api.keys.KeysApi -import org.whispersystems.signalservice.api.link.LinkDeviceApi import org.whispersystems.signalservice.api.message.MessageApi -import org.whispersystems.signalservice.api.payments.PaymentsApi import org.whispersystems.signalservice.api.profiles.ProfileApi -import org.whispersystems.signalservice.api.provisioning.ProvisioningApi import org.whispersystems.signalservice.api.push.TrustStore -import org.whispersystems.signalservice.api.ratelimit.RateLimitChallengeApi import org.whispersystems.signalservice.api.registration.RegistrationApi -import org.whispersystems.signalservice.api.remoteconfig.RemoteConfigApi import org.whispersystems.signalservice.api.services.DonationsService import org.whispersystems.signalservice.api.services.ProfileService import org.whispersystems.signalservice.api.storage.StorageServiceApi -import org.whispersystems.signalservice.api.svr.SvrBApi -import org.whispersystems.signalservice.api.username.UsernameApi import org.whispersystems.signalservice.api.util.Tls12SocketFactory import org.whispersystems.signalservice.api.util.TlsProxySocketFactory import org.whispersystems.signalservice.api.websocket.SignalWebSocket diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupMessagesJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupMessagesJob.kt index c83df3591b..2cbed6d2eb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupMessagesJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/BackupMessagesJob.kt @@ -23,6 +23,7 @@ import org.signal.core.util.logging.logW import org.signal.libsignal.messagebackup.BackupForwardSecrecyToken import org.signal.libsignal.net.SvrBStoreResponse import org.signal.libsignal.zkgroup.VerificationFailedException +import org.signal.network.api.SvrBApi import org.signal.protos.resumableuploads.ResumableUpload import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.attachments.AttachmentUploadUtil @@ -55,7 +56,6 @@ import org.whispersystems.signalservice.api.NetworkResult import org.whispersystems.signalservice.api.messages.AttachmentTransferProgress import org.whispersystems.signalservice.api.messages.SignalServiceAttachment import org.whispersystems.signalservice.api.push.exceptions.ResumeLocationInvalidException -import org.whispersystems.signalservice.api.svr.SvrBApi import org.whispersystems.signalservice.internal.push.AttachmentUploadForm import java.io.File import java.io.FileInputStream diff --git a/app/src/main/java/org/thoughtcrime/securesms/net/SignalNetwork.kt b/app/src/main/java/org/thoughtcrime/securesms/net/SignalNetwork.kt index 49d7797b5d..7d926a2543 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/net/SignalNetwork.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/net/SignalNetwork.kt @@ -5,25 +5,25 @@ package org.thoughtcrime.securesms.net +import org.signal.network.api.ArchiveApi +import org.signal.network.api.CallingApi +import org.signal.network.api.CdsApi +import org.signal.network.api.CertificateApi +import org.signal.network.api.LinkDeviceApi +import org.signal.network.api.PaymentsApi +import org.signal.network.api.ProvisioningApi +import org.signal.network.api.RateLimitChallengeApi +import org.signal.network.api.RemoteConfigApi +import org.signal.network.api.SvrBApi +import org.signal.network.api.UsernameApi import org.thoughtcrime.securesms.dependencies.AppDependencies import org.thoughtcrime.securesms.dependencies.KeyTransparencyApi import org.whispersystems.signalservice.api.account.AccountApi -import org.whispersystems.signalservice.api.archive.ArchiveApi import org.whispersystems.signalservice.api.attachment.AttachmentApi -import org.whispersystems.signalservice.api.calling.CallingApi -import org.whispersystems.signalservice.api.cds.CdsApi -import org.whispersystems.signalservice.api.certificate.CertificateApi import org.whispersystems.signalservice.api.keys.KeysApi -import org.whispersystems.signalservice.api.link.LinkDeviceApi import org.whispersystems.signalservice.api.message.MessageApi -import org.whispersystems.signalservice.api.payments.PaymentsApi import org.whispersystems.signalservice.api.profiles.ProfileApi -import org.whispersystems.signalservice.api.provisioning.ProvisioningApi -import org.whispersystems.signalservice.api.ratelimit.RateLimitChallengeApi -import org.whispersystems.signalservice.api.remoteconfig.RemoteConfigApi import org.whispersystems.signalservice.api.storage.StorageServiceApi -import org.whispersystems.signalservice.api.svr.SvrBApi -import org.whispersystems.signalservice.api.username.UsernameApi /** * A convenient way to access network operations, similar to [org.thoughtcrime.securesms.database.SignalDatabase] and [org.thoughtcrime.securesms.keyvalue.SignalStore]. diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/MobileCoinConfig.java b/app/src/main/java/org/thoughtcrime/securesms/payments/MobileCoinConfig.java index 46117527e2..bb75348339 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/MobileCoinConfig.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/MobileCoinConfig.java @@ -8,8 +8,7 @@ import androidx.annotation.RawRes; import com.mobilecoin.lib.ClientConfig; import org.thoughtcrime.securesms.dependencies.AppDependencies; -import org.whispersystems.signalservice.api.SignalServiceAccountManager; -import org.whispersystems.signalservice.api.payments.PaymentsApi; +import org.signal.network.api.PaymentsApi; import org.whispersystems.signalservice.internal.push.AuthCredentials; import java.io.IOException; diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/MobileCoinMainNetConfig.java b/app/src/main/java/org/thoughtcrime/securesms/payments/MobileCoinMainNetConfig.java index cd89163d50..d3c105a313 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/MobileCoinMainNetConfig.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/MobileCoinMainNetConfig.java @@ -5,14 +5,12 @@ import android.net.Uri; import androidx.annotation.NonNull; import com.mobilecoin.lib.ClientConfig; -import com.mobilecoin.lib.Verifier; import com.mobilecoin.lib.exceptions.AttestationException; import org.thoughtcrime.securesms.R; import org.signal.core.util.Base64; import org.whispersystems.signalservice.api.NetworkResultUtil; -import org.whispersystems.signalservice.api.SignalServiceAccountManager; -import org.whispersystems.signalservice.api.payments.PaymentsApi; +import org.signal.network.api.PaymentsApi; import org.whispersystems.signalservice.internal.push.AuthCredentials; import java.io.IOException; diff --git a/app/src/main/java/org/thoughtcrime/securesms/payments/MobileCoinTestNetConfig.java b/app/src/main/java/org/thoughtcrime/securesms/payments/MobileCoinTestNetConfig.java index 58ebe3d1b7..33bd62de11 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/payments/MobileCoinTestNetConfig.java +++ b/app/src/main/java/org/thoughtcrime/securesms/payments/MobileCoinTestNetConfig.java @@ -10,7 +10,7 @@ import com.mobilecoin.lib.exceptions.AttestationException; import org.signal.core.util.Base64; import org.thoughtcrime.securesms.R; import org.whispersystems.signalservice.api.NetworkResultUtil; -import org.whispersystems.signalservice.api.payments.PaymentsApi; +import org.signal.network.api.PaymentsApi; import org.whispersystems.signalservice.internal.push.AuthCredentials; import java.io.IOException; diff --git a/app/src/spinner/java/org/thoughtcrime/securesms/BackupPlugin.kt b/app/src/spinner/java/org/thoughtcrime/securesms/BackupPlugin.kt index 8cb4c94e70..26f48646b4 100644 --- a/app/src/spinner/java/org/thoughtcrime/securesms/BackupPlugin.kt +++ b/app/src/spinner/java/org/thoughtcrime/securesms/BackupPlugin.kt @@ -14,6 +14,7 @@ import org.signal.core.util.bytes import org.signal.core.util.decodeOrNull import org.signal.core.util.logging.Log import org.signal.libsignal.zkgroup.profiles.ProfileKey +import org.signal.network.api.SvrBApi import org.signal.spinner.Plugin import org.signal.spinner.PluginResult import org.thoughtcrime.securesms.backup.v2.BackupRepository @@ -24,9 +25,7 @@ import org.thoughtcrime.securesms.net.SignalNetwork import org.thoughtcrime.securesms.providers.BlobProvider import org.thoughtcrime.securesms.recipients.Recipient import org.whispersystems.signalservice.api.NetworkResult -import org.whispersystems.signalservice.api.svr.SvrBApi import java.io.IOException -import java.lang.StringBuilder import java.text.SimpleDateFormat import java.util.Date import java.util.Locale diff --git a/app/src/test/java/org/thoughtcrime/securesms/dependencies/MockApplicationDependencyProvider.kt b/app/src/test/java/org/thoughtcrime/securesms/dependencies/MockApplicationDependencyProvider.kt index de833e99df..c4848d7ba8 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/dependencies/MockApplicationDependencyProvider.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/dependencies/MockApplicationDependencyProvider.kt @@ -6,6 +6,17 @@ import org.signal.core.util.concurrent.DeadlockDetector import org.signal.libsignal.net.Network import org.signal.libsignal.zkgroup.profiles.ClientZkProfileOperations import org.signal.libsignal.zkgroup.receipts.ClientZkReceiptOperations +import org.signal.network.api.ArchiveApi +import org.signal.network.api.CallingApi +import org.signal.network.api.CdsApi +import org.signal.network.api.CertificateApi +import org.signal.network.api.LinkDeviceApi +import org.signal.network.api.PaymentsApi +import org.signal.network.api.ProvisioningApi +import org.signal.network.api.RateLimitChallengeApi +import org.signal.network.api.RemoteConfigApi +import org.signal.network.api.SvrBApi +import org.signal.network.api.UsernameApi import org.thoughtcrime.securesms.components.TypingStatusRepository import org.thoughtcrime.securesms.components.TypingStatusSender import org.thoughtcrime.securesms.crypto.storage.SignalServiceDataStoreImpl @@ -39,27 +50,16 @@ import org.whispersystems.signalservice.api.SignalServiceDataStore import org.whispersystems.signalservice.api.SignalServiceMessageReceiver import org.whispersystems.signalservice.api.SignalServiceMessageSender import org.whispersystems.signalservice.api.account.AccountApi -import org.whispersystems.signalservice.api.archive.ArchiveApi import org.whispersystems.signalservice.api.attachment.AttachmentApi -import org.whispersystems.signalservice.api.calling.CallingApi -import org.whispersystems.signalservice.api.cds.CdsApi -import org.whispersystems.signalservice.api.certificate.CertificateApi import org.whispersystems.signalservice.api.donations.DonationsApi import org.whispersystems.signalservice.api.groupsv2.GroupsV2Operations import org.whispersystems.signalservice.api.keys.KeysApi -import org.whispersystems.signalservice.api.link.LinkDeviceApi import org.whispersystems.signalservice.api.message.MessageApi -import org.whispersystems.signalservice.api.payments.PaymentsApi import org.whispersystems.signalservice.api.profiles.ProfileApi -import org.whispersystems.signalservice.api.provisioning.ProvisioningApi -import org.whispersystems.signalservice.api.ratelimit.RateLimitChallengeApi import org.whispersystems.signalservice.api.registration.RegistrationApi -import org.whispersystems.signalservice.api.remoteconfig.RemoteConfigApi import org.whispersystems.signalservice.api.services.DonationsService import org.whispersystems.signalservice.api.services.ProfileService import org.whispersystems.signalservice.api.storage.StorageServiceApi -import org.whispersystems.signalservice.api.svr.SvrBApi -import org.whispersystems.signalservice.api.username.UsernameApi import org.whispersystems.signalservice.api.websocket.SignalWebSocket import org.whispersystems.signalservice.internal.configuration.SignalServiceConfiguration import org.whispersystems.signalservice.internal.push.PushServiceSocket diff --git a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/ratelimit/SubmitPushChallengePayload.java b/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/ratelimit/SubmitPushChallengePayload.java index da3536267e..06099bd80a 100644 --- a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/ratelimit/SubmitPushChallengePayload.java +++ b/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/ratelimit/SubmitPushChallengePayload.java @@ -7,7 +7,7 @@ package org.whispersystems.signalservice.api.ratelimit; import com.fasterxml.jackson.annotation.JsonProperty; -class SubmitPushChallengePayload { +public class SubmitPushChallengePayload { @JsonProperty private String type; diff --git a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/ratelimit/SubmitRecaptchaChallengePayload.java b/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/ratelimit/SubmitRecaptchaChallengePayload.java index 82d06a90d8..654a42152c 100644 --- a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/ratelimit/SubmitRecaptchaChallengePayload.java +++ b/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/ratelimit/SubmitRecaptchaChallengePayload.java @@ -7,7 +7,7 @@ package org.whispersystems.signalservice.api.ratelimit; import com.fasterxml.jackson.annotation.JsonProperty; -class SubmitRecaptchaChallengePayload { +public class SubmitRecaptchaChallengePayload { @JsonProperty private String type; diff --git a/lib/network/build.gradle.kts b/lib/network/build.gradle.kts new file mode 100644 index 0000000000..7a6c234199 --- /dev/null +++ b/lib/network/build.gradle.kts @@ -0,0 +1,61 @@ +/* + * Copyright 2026 Signal Messenger, LLC + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +plugins { + id("java-library") + id("org.jetbrains.kotlin.jvm") + id("idea") + id("org.jlleitschuh.gradle.ktlint") +} + +java { + sourceCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get()) + targetCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get()) +} + +tasks.withType().configureEach { + kotlin { + compilerOptions { + jvmTarget = JvmTarget.fromTarget(libs.versions.kotlinJvmTarget.get()) + freeCompilerArgs = listOf("-Xjvm-default=all") + suppressWarnings = true + } + } +} + +ktlint { + version.set("1.5.0") +} + +tasks.whenTaskAdded { + if (name == "lint") { + enabled = false + } +} + +dependencies { + api(project(":lib:libsignal-service")) + + implementation(libs.libsignal.client) + api(libs.square.okhttp3) + api(libs.square.okio) + + api(libs.rxjava3.rxjava) + implementation(libs.rxjava3.rxkotlin) + + implementation(libs.kotlin.stdlib.jdk8) + implementation(libs.kotlinx.coroutines.core) + implementation(libs.kotlinx.coroutines.core.jvm) + + implementation(project(":core:util-jvm")) + implementation(project(":core:models-jvm")) + + testImplementation(testLibs.junit.junit) + testImplementation(testLibs.assertk) + testImplementation(testLibs.mockk) +} diff --git a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/archive/ArchiveApi.kt b/lib/network/src/main/java/org/signal/network/api/ArchiveApi.kt similarity index 94% rename from lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/archive/ArchiveApi.kt rename to lib/network/src/main/java/org/signal/network/api/ArchiveApi.kt index fea4048bdc..4e9faf4c88 100644 --- a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/archive/ArchiveApi.kt +++ b/lib/network/src/main/java/org/signal/network/api/ArchiveApi.kt @@ -1,9 +1,9 @@ /* - * Copyright 2023 Signal Messenger, LLC + * Copyright 2026 Signal Messenger, LLC * SPDX-License-Identifier: AGPL-3.0-only */ -package org.whispersystems.signalservice.api.archive +package org.signal.network.api import org.signal.core.models.ServiceId.ACI import org.signal.core.models.backup.BackupKey @@ -18,7 +18,21 @@ import org.signal.libsignal.zkgroup.backups.BackupAuthCredential import org.signal.libsignal.zkgroup.backups.BackupAuthCredentialRequestContext import org.signal.libsignal.zkgroup.backups.BackupAuthCredentialResponse import org.whispersystems.signalservice.api.NetworkResult +import org.whispersystems.signalservice.api.archive.ArchiveCredentialPresentation +import org.whispersystems.signalservice.api.archive.ArchiveGetBackupInfoResponse +import org.whispersystems.signalservice.api.archive.ArchiveGetMediaItemsResponse import org.whispersystems.signalservice.api.archive.ArchiveGetMediaItemsResponse.StoredMediaObject +import org.whispersystems.signalservice.api.archive.ArchiveKeyRotationLimitResponse +import org.whispersystems.signalservice.api.archive.ArchiveMediaRequest +import org.whispersystems.signalservice.api.archive.ArchiveMediaResponse +import org.whispersystems.signalservice.api.archive.ArchiveServiceAccess +import org.whispersystems.signalservice.api.archive.ArchiveServiceCredentialsResponse +import org.whispersystems.signalservice.api.archive.ArchiveSetBackupIdRequest +import org.whispersystems.signalservice.api.archive.ArchiveSetPublicKeyRequest +import org.whispersystems.signalservice.api.archive.BatchArchiveMediaRequest +import org.whispersystems.signalservice.api.archive.BatchArchiveMediaResponse +import org.whispersystems.signalservice.api.archive.DeleteArchivedMediaRequest +import org.whispersystems.signalservice.api.archive.GetArchiveCdnCredentialsResponse import org.whispersystems.signalservice.api.messages.SignalServiceAttachment import org.whispersystems.signalservice.api.websocket.SignalWebSocket import org.whispersystems.signalservice.internal.delete diff --git a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/calling/CallingApi.kt b/lib/network/src/main/java/org/signal/network/api/CallingApi.kt similarity index 95% rename from lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/calling/CallingApi.kt rename to lib/network/src/main/java/org/signal/network/api/CallingApi.kt index 226c04f3fe..2c44c5cfb3 100644 --- a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/calling/CallingApi.kt +++ b/lib/network/src/main/java/org/signal/network/api/CallingApi.kt @@ -1,9 +1,9 @@ /* - * Copyright 2025 Signal Messenger, LLC + * Copyright 2026 Signal Messenger, LLC * SPDX-License-Identifier: AGPL-3.0-only */ -package org.whispersystems.signalservice.api.calling +package org.signal.network.api import org.signal.libsignal.zkgroup.calllinks.CreateCallLinkCredentialRequest import org.signal.libsignal.zkgroup.calllinks.CreateCallLinkCredentialResponse @@ -80,7 +80,7 @@ class CallingApi( /** * Send an http request on behalf of the calling infrastructure. Only returns [NetworkResult.Success] with the - * wrapped [CallingResponse] wrapping the error which in practice should never happen. + * wrapped [org.whispersystems.signalservice.api.messages.calls.CallingResponse] wrapping the error which in practice should never happen. * * @param requestId Request identifier * @param url Fully qualified URL to request diff --git a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/cds/CdsApi.kt b/lib/network/src/main/java/org/signal/network/api/CdsApi.kt similarity index 87% rename from lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/cds/CdsApi.kt rename to lib/network/src/main/java/org/signal/network/api/CdsApi.kt index 2faebe9d28..82cbede3c1 100644 --- a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/cds/CdsApi.kt +++ b/lib/network/src/main/java/org/signal/network/api/CdsApi.kt @@ -1,9 +1,9 @@ /* - * Copyright 2025 Signal Messenger, LLC + * Copyright 2026 Signal Messenger, LLC * SPDX-License-Identifier: AGPL-3.0-only */ -package org.whispersystems.signalservice.api.cds +package org.signal.network.api import org.signal.core.models.ServiceId import org.signal.core.util.logging.Log @@ -11,9 +11,8 @@ import org.signal.libsignal.net.CdsiProtocolException import org.signal.libsignal.net.Network import org.signal.libsignal.zkgroup.profiles.ProfileKey import org.whispersystems.signalservice.api.NetworkResult -import org.whispersystems.signalservice.api.NetworkResult.StatusCodeError +import org.whispersystems.signalservice.api.cds.CdsiV2Service import org.whispersystems.signalservice.api.push.exceptions.CdsiInvalidTokenException -import org.whispersystems.signalservice.api.push.exceptions.CdsiResourceExhaustedException import org.whispersystems.signalservice.api.websocket.SignalWebSocket import org.whispersystems.signalservice.internal.get import org.whispersystems.signalservice.internal.push.CdsiAuthResponse @@ -40,9 +39,9 @@ class CdsApi(private val authWebSocket: SignalWebSocket.AuthenticatedWebSocket) * - 200: Success * - 401: Not authenticated * - * And then CDS websocket communications, can return the following within [StatusCodeError] - * - [CdsiResourceExhaustedException]: Rate limited - * - [CdsiInvalidTokenException]: Token no longer valid + * And then CDS websocket communications, can return the following within [org.whispersystems.signalservice.api.NetworkResult.StatusCodeError] + * - [org.whispersystems.signalservice.api.push.exceptions.CdsiResourceExhaustedException]: Rate limited + * - [org.whispersystems.signalservice.api.push.exceptions.CdsiInvalidTokenException]: Token no longer valid */ fun getRegisteredUsers( previousE164s: Set, diff --git a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/certificate/CertificateApi.kt b/lib/network/src/main/java/org/signal/network/api/CertificateApi.kt similarity index 88% rename from lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/certificate/CertificateApi.kt rename to lib/network/src/main/java/org/signal/network/api/CertificateApi.kt index 131867f399..ec62df6f93 100644 --- a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/certificate/CertificateApi.kt +++ b/lib/network/src/main/java/org/signal/network/api/CertificateApi.kt @@ -1,9 +1,9 @@ /* - * Copyright 2025 Signal Messenger, LLC + * Copyright 2026 Signal Messenger, LLC * SPDX-License-Identifier: AGPL-3.0-only */ -package org.whispersystems.signalservice.api.certificate +package org.signal.network.api import org.whispersystems.signalservice.api.NetworkResult import org.whispersystems.signalservice.api.websocket.SignalWebSocket @@ -12,7 +12,7 @@ import org.whispersystems.signalservice.internal.push.SenderCertificate import org.whispersystems.signalservice.internal.websocket.WebSocketRequestMessage /** - * Endpoints to get [SenderCertificate]s. + * Endpoints to get [org.whispersystems.signalservice.internal.push.SenderCertificate]s. */ class CertificateApi(private val authWebSocket: SignalWebSocket.AuthenticatedWebSocket) { diff --git a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/link/LinkDeviceApi.kt b/lib/network/src/main/java/org/signal/network/api/LinkDeviceApi.kt similarity index 93% rename from lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/link/LinkDeviceApi.kt rename to lib/network/src/main/java/org/signal/network/api/LinkDeviceApi.kt index 85c3d16eca..76bd87b7fa 100644 --- a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/link/LinkDeviceApi.kt +++ b/lib/network/src/main/java/org/signal/network/api/LinkDeviceApi.kt @@ -1,9 +1,9 @@ /* - * Copyright 2024 Signal Messenger, LLC + * Copyright 2026 Signal Messenger, LLC * SPDX-License-Identifier: AGPL-3.0-only */ -package org.whispersystems.signalservice.api.link +package org.signal.network.api import okio.ByteString.Companion.toByteString import org.signal.core.models.AccountEntropyPool @@ -12,12 +12,18 @@ import org.signal.core.models.ServiceId.ACI import org.signal.core.models.ServiceId.PNI import org.signal.core.models.backup.MediaRootBackupKey import org.signal.core.models.backup.MessageBackupKey -import org.signal.core.util.Base64.encodeWithPadding +import org.signal.core.util.Base64 import org.signal.core.util.urlEncode import org.signal.libsignal.protocol.IdentityKeyPair import org.signal.libsignal.protocol.ecc.ECPublicKey import org.signal.libsignal.zkgroup.profiles.ProfileKey import org.whispersystems.signalservice.api.NetworkResult +import org.whispersystems.signalservice.api.link.LinkedDeviceVerificationCodeResponse +import org.whispersystems.signalservice.api.link.SetDeviceNameRequest +import org.whispersystems.signalservice.api.link.SetLinkedDeviceTransferArchiveRequest +import org.whispersystems.signalservice.api.link.TransferArchiveError +import org.whispersystems.signalservice.api.link.TransferArchiveResponse +import org.whispersystems.signalservice.api.link.WaitForLinkedDeviceResponse import org.whispersystems.signalservice.api.messages.multidevice.DeviceInfo import org.whispersystems.signalservice.api.provisioning.ProvisioningMessage import org.whispersystems.signalservice.api.websocket.SignalWebSocket @@ -127,7 +133,7 @@ class LinkDeviceApi( pniBinary = pni.toByteStringWithoutPrefix() ) val ciphertext: ByteArray = cipher.encrypt(message) - val body = ProvisioningMessage(encodeWithPadding(ciphertext)) + val body = ProvisioningMessage(Base64.encodeWithPadding(ciphertext)) val request = WebSocketRequestMessage.put("/v1/provisioning/${deviceIdentifier.urlEncode()}", body) return NetworkResult.fromWebSocketRequest(authWebSocket, request) diff --git a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/payments/PaymentsApi.kt b/lib/network/src/main/java/org/signal/network/api/PaymentsApi.kt similarity index 88% rename from lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/payments/PaymentsApi.kt rename to lib/network/src/main/java/org/signal/network/api/PaymentsApi.kt index 6524fe765c..5f17846710 100644 --- a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/payments/PaymentsApi.kt +++ b/lib/network/src/main/java/org/signal/network/api/PaymentsApi.kt @@ -1,11 +1,12 @@ /* - * Copyright 2025 Signal Messenger, LLC + * Copyright 2026 Signal Messenger, LLC * SPDX-License-Identifier: AGPL-3.0-only */ -package org.whispersystems.signalservice.api.payments +package org.signal.network.api import org.whispersystems.signalservice.api.NetworkResult +import org.whispersystems.signalservice.api.payments.CurrencyConversions import org.whispersystems.signalservice.api.websocket.SignalWebSocket import org.whispersystems.signalservice.internal.get import org.whispersystems.signalservice.internal.push.AuthCredentials diff --git a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/provisioning/ProvisioningApi.kt b/lib/network/src/main/java/org/signal/network/api/ProvisioningApi.kt similarity index 87% rename from lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/provisioning/ProvisioningApi.kt rename to lib/network/src/main/java/org/signal/network/api/ProvisioningApi.kt index 2ae58ce10c..e49c30d28d 100644 --- a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/provisioning/ProvisioningApi.kt +++ b/lib/network/src/main/java/org/signal/network/api/ProvisioningApi.kt @@ -1,15 +1,17 @@ /* - * Copyright 2025 Signal Messenger, LLC + * Copyright 2026 Signal Messenger, LLC * SPDX-License-Identifier: AGPL-3.0-only */ -package org.whispersystems.signalservice.api.provisioning +package org.signal.network.api import org.signal.core.util.Base64 import org.signal.core.util.urlEncode import org.signal.libsignal.protocol.ecc.ECPublicKey import org.signal.registration.proto.RegistrationProvisionMessage import org.whispersystems.signalservice.api.NetworkResult +import org.whispersystems.signalservice.api.provisioning.ProvisioningMessage +import org.whispersystems.signalservice.api.provisioning.RestoreMethod import org.whispersystems.signalservice.api.registration.RestoreMethodBody import org.whispersystems.signalservice.api.websocket.SignalWebSocket import org.whispersystems.signalservice.internal.crypto.PrimaryProvisioningCipher @@ -44,7 +46,7 @@ class ProvisioningApi(private val authWebSocket: SignalWebSocket.AuthenticatedWe } /** - * Wait for the [RestoreMethod] to be set on the server by the new device. This is a long polling operation. + * Wait for the [org.whispersystems.signalservice.api.provisioning.RestoreMethod] to be set on the server by the new device. This is a long polling operation. * * GET /v1/devices/restore_account/[token]?timeout=[timeout] * - 200: A request was received for the given token diff --git a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/ratelimit/RateLimitChallengeApi.kt b/lib/network/src/main/java/org/signal/network/api/RateLimitChallengeApi.kt similarity index 88% rename from lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/ratelimit/RateLimitChallengeApi.kt rename to lib/network/src/main/java/org/signal/network/api/RateLimitChallengeApi.kt index 69d8d8cd45..b7d0021757 100644 --- a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/ratelimit/RateLimitChallengeApi.kt +++ b/lib/network/src/main/java/org/signal/network/api/RateLimitChallengeApi.kt @@ -1,11 +1,13 @@ /* - * Copyright 2025 Signal Messenger, LLC + * Copyright 2026 Signal Messenger, LLC * SPDX-License-Identifier: AGPL-3.0-only */ -package org.whispersystems.signalservice.api.ratelimit +package org.signal.network.api import org.whispersystems.signalservice.api.NetworkResult +import org.whispersystems.signalservice.api.ratelimit.SubmitPushChallengePayload +import org.whispersystems.signalservice.api.ratelimit.SubmitRecaptchaChallengePayload import org.whispersystems.signalservice.api.websocket.SignalWebSocket import org.whispersystems.signalservice.internal.post import org.whispersystems.signalservice.internal.put diff --git a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/remoteconfig/RemoteConfigApi.kt b/lib/network/src/main/java/org/signal/network/api/RemoteConfigApi.kt similarity index 93% rename from lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/remoteconfig/RemoteConfigApi.kt rename to lib/network/src/main/java/org/signal/network/api/RemoteConfigApi.kt index af8d7c91af..9141108a9a 100644 --- a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/remoteconfig/RemoteConfigApi.kt +++ b/lib/network/src/main/java/org/signal/network/api/RemoteConfigApi.kt @@ -1,11 +1,13 @@ /* - * Copyright 2025 Signal Messenger, LLC + * Copyright 2026 Signal Messenger, LLC * SPDX-License-Identifier: AGPL-3.0-only */ -package org.whispersystems.signalservice.api.remoteconfig +package org.signal.network.api import org.whispersystems.signalservice.api.NetworkResult +import org.whispersystems.signalservice.api.remoteconfig.RemoteConfigResponse +import org.whispersystems.signalservice.api.remoteconfig.RemoteConfigResult import org.whispersystems.signalservice.api.websocket.SignalWebSocket import org.whispersystems.signalservice.internal.get import org.whispersystems.signalservice.internal.push.PushServiceSocket diff --git a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/svr/SvrBApi.kt b/lib/network/src/main/java/org/signal/network/api/SvrBApi.kt similarity index 86% rename from lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/svr/SvrBApi.kt rename to lib/network/src/main/java/org/signal/network/api/SvrBApi.kt index 5648bb28f0..d3ac0c5c98 100644 --- a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/svr/SvrBApi.kt +++ b/lib/network/src/main/java/org/signal/network/api/SvrBApi.kt @@ -1,9 +1,9 @@ /* - * Copyright 2025 Signal Messenger, LLC + * Copyright 2026 Signal Messenger, LLC * SPDX-License-Identifier: AGPL-3.0-only */ -package org.whispersystems.signalservice.api.svr +package org.signal.network.api import org.signal.core.models.backup.MessageBackupKey import org.signal.libsignal.attest.AttestationDataException @@ -13,14 +13,12 @@ import org.signal.libsignal.net.Network import org.signal.libsignal.net.NetworkException import org.signal.libsignal.net.NetworkProtocolException import org.signal.libsignal.net.RetryLaterException -import org.signal.libsignal.net.SvrB import org.signal.libsignal.net.SvrBRestoreResponse import org.signal.libsignal.net.SvrBStoreResponse import org.signal.libsignal.sgxsession.SgxCommunicationFailureException import org.signal.libsignal.svr.DataMissingException import org.signal.libsignal.svr.InvalidSvrBDataException import org.signal.libsignal.svr.RestoreFailedException -import org.whispersystems.signalservice.api.NetworkResult import org.whispersystems.signalservice.internal.push.AuthCredentials import java.io.IOException import java.util.concurrent.ExecutionException @@ -33,7 +31,7 @@ import kotlin.time.toKotlinDuration class SvrBApi(private val network: Network) { /** - * See [SvrB.createNewBackupChain]. + * See [org.signal.libsignal.net.SvrB.createNewBackupChain]. * * Call this the first time you ever interact with SVRB. Gives you a secret data to persist and use for future calls. * @@ -46,10 +44,10 @@ class SvrBApi(private val network: Network) { } /** - * See [SvrB.store]. + * See [org.signal.libsignal.net.SvrB.store]. * * Handling this one is funny because the underlying protocols don't use status codes, instead favoring complex results. - * As a result, responses are only [NetworkResult.Success] and [NetworkResult.NetworkError], with errors being accounted for + * As a result, responses are only [org.whispersystems.signalservice.api.NetworkResult.Success] and [org.whispersystems.signalservice.api.NetworkResult.NetworkError], with errors being accounted for * in the success case via the sealed result class. */ fun store(auth: AuthCredentials, backupKey: MessageBackupKey, previousSecretData: ByteArray): StoreResult { @@ -78,10 +76,10 @@ class SvrBApi(private val network: Network) { } /** - * See [SvrB.restore] + * See [org.signal.libsignal.net.SvrB.restore] * * Handling this one is funny because the underlying protocols don't use status codes, instead favoring complex results. - * As a result, responses are only [NetworkResult.Success] and [NetworkResult.NetworkError], with errors being accounted for + * As a result, responses are only [org.whispersystems.signalservice.api.NetworkResult.Success] and [org.whispersystems.signalservice.api.NetworkResult.NetworkError], with errors being accounted for * in the success case via the sealed result class. */ fun restore(auth: AuthCredentials, backupKey: MessageBackupKey, forwardSecrecyMetadata: ByteArray): RestoreResult { @@ -96,7 +94,7 @@ class SvrBApi(private val network: Network) { is InvalidSvrBDataException -> RestoreResult.InvalidDataError is RestoreFailedException -> RestoreResult.RestoreFailedError(exception.triesRemaining) is DataMissingException -> RestoreResult.DataMissingError - is RetryLaterException -> RestoreResult.NetworkError(okio.IOException(exception), exception.duration.toKotlinDuration()) + is RetryLaterException -> RestoreResult.NetworkError(IOException(exception), exception.duration.toKotlinDuration()) is NetworkException -> RestoreResult.NetworkError(exception) is NetworkProtocolException -> RestoreResult.NetworkError(exception) is AttestationFailedException, @@ -115,7 +113,7 @@ class SvrBApi(private val network: Network) { /** Operation succeeded. */ data class Success(val data: SvrBStoreResponse) : StoreResult() - /** Indicates the the existing data is unreadable, and you need to start a new chain from the beginning. */ + /** Indicates the existing data is unreadable, and you need to start a new chain from the beginning. */ data object InvalidDataError : StoreResult() /** A retryable network error. */ @@ -138,7 +136,7 @@ class SvrBApi(private val network: Network) { /** No data could be found. This could indicate the user entered their AEP incorrectly. */ data object DataMissingError : RestoreResult() - /** Indicate thee existing data is malformed and therefore unrecoverable. */ + /** Indicate the existing data is malformed and therefore unrecoverable. */ data object InvalidDataError : RestoreResult() /** diff --git a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/username/UsernameApi.kt b/lib/network/src/main/java/org/signal/network/api/UsernameApi.kt similarity index 86% rename from lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/username/UsernameApi.kt rename to lib/network/src/main/java/org/signal/network/api/UsernameApi.kt index 314bd8fd50..a9f80ad247 100644 --- a/lib/libsignal-service/src/main/java/org/whispersystems/signalservice/api/username/UsernameApi.kt +++ b/lib/network/src/main/java/org/signal/network/api/UsernameApi.kt @@ -1,9 +1,9 @@ /* - * Copyright 2025 Signal Messenger, LLC + * Copyright 2026 Signal Messenger, LLC * SPDX-License-Identifier: AGPL-3.0-only */ -package org.whispersystems.signalservice.api.username +package org.signal.network.api import kotlinx.coroutines.runBlocking import org.signal.core.models.ServiceId @@ -12,14 +12,12 @@ import org.signal.libsignal.net.RequestResult import org.signal.libsignal.net.UnauthUsernamesService import org.signal.libsignal.net.getOrError import org.signal.libsignal.usernames.Username -import org.whispersystems.signalservice.api.account.AccountApi import org.whispersystems.signalservice.api.websocket.SignalWebSocket -import org.whispersystems.signalservice.internal.get import java.util.UUID /** * Username specific APIs related to learning service information for someone else by username. - * For APIs to manage your own username, see [AccountApi]. + * For APIs to manage your own username, see [org.whispersystems.signalservice.api.account.AccountApi]. */ class UsernameApi(private val unauthWebSocket: SignalWebSocket.UnauthenticatedWebSocket) { @@ -27,7 +25,7 @@ class UsernameApi(private val unauthWebSocket: SignalWebSocket.UnauthenticatedWe * Gets the ACI for the given [username]. This is an unauthenticated request. * * A successful result with a null value means the username was not found on the server. - * Other errors (network, decryption, etc.) are represented by the other [RequestResult] types. + * Other errors (network, decryption, etc.) are represented by the other [org.signal.libsignal.net.RequestResult] types. */ fun getAciByUsername(username: Username): RequestResult { return runBlocking { diff --git a/settings.gradle.kts b/settings.gradle.kts index 74bfaed59c..73cbe45913 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -74,6 +74,7 @@ include(":core:serialization") // Lib modules include(":lib:libsignal-service") +include(":lib:network") include(":lib:glide") include(":lib:photoview") include(":lib:sticky-header-grid")