Move more networking stuff into SignalNetwork.
This commit is contained in:
parent
e247d311d8
commit
7835b1d1fc
10 changed files with 61 additions and 15 deletions
|
@ -45,7 +45,9 @@ import org.whispersystems.signalservice.api.SignalServiceMessageReceiver
|
|||
import org.whispersystems.signalservice.api.SignalServiceMessageSender
|
||||
import org.whispersystems.signalservice.api.SignalWebSocket
|
||||
import org.whispersystems.signalservice.api.archive.ArchiveApi
|
||||
import org.whispersystems.signalservice.api.attachment.AttachmentApi
|
||||
import org.whispersystems.signalservice.api.groupsv2.GroupsV2Operations
|
||||
import org.whispersystems.signalservice.api.keys.KeysApi
|
||||
import org.whispersystems.signalservice.api.services.CallLinksService
|
||||
import org.whispersystems.signalservice.api.services.DonationsService
|
||||
import org.whispersystems.signalservice.api.services.ProfileService
|
||||
|
@ -284,6 +286,14 @@ object AppDependencies {
|
|||
val archiveApi: ArchiveApi
|
||||
get() = networkModule.archiveApi
|
||||
|
||||
@JvmStatic
|
||||
val keysApi: KeysApi
|
||||
get() = networkModule.keysApi
|
||||
|
||||
@JvmStatic
|
||||
val attachmentApi: AttachmentApi
|
||||
get() = networkModule.attachmentApi
|
||||
|
||||
@JvmStatic
|
||||
val okHttpClient: OkHttpClient
|
||||
get() = networkModule.okHttpClient
|
||||
|
@ -344,5 +354,7 @@ object AppDependencies {
|
|||
fun provideLibsignalNetwork(config: SignalServiceConfiguration): Network
|
||||
fun provideBillingApi(): BillingApi
|
||||
fun provideArchiveApi(pushServiceSocket: PushServiceSocket): ArchiveApi
|
||||
fun provideKeysApi(pushServiceSocket: PushServiceSocket): KeysApi
|
||||
fun provideAttachmentApi(signalWebSocket: SignalWebSocket, pushServiceSocket: PushServiceSocket): AttachmentApi
|
||||
}
|
||||
}
|
||||
|
|
|
@ -83,10 +83,13 @@ import org.whispersystems.signalservice.api.SignalServiceMessageReceiver;
|
|||
import org.whispersystems.signalservice.api.SignalServiceMessageSender;
|
||||
import org.whispersystems.signalservice.api.SignalWebSocket;
|
||||
import org.whispersystems.signalservice.api.archive.ArchiveApi;
|
||||
import org.whispersystems.signalservice.api.attachment.AttachmentApi;
|
||||
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.push.ServiceId.ACI;
|
||||
import org.whispersystems.signalservice.api.push.ServiceId.PNI;
|
||||
import org.whispersystems.signalservice.api.registration.RegistrationApi;
|
||||
import org.whispersystems.signalservice.api.services.CallLinksService;
|
||||
import org.whispersystems.signalservice.api.services.DonationsService;
|
||||
import org.whispersystems.signalservice.api.services.ProfileService;
|
||||
|
@ -455,6 +458,16 @@ public class ApplicationDependencyProvider implements AppDependencies.Provider {
|
|||
return new ArchiveApi(pushServiceSocket);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull KeysApi provideKeysApi(@NonNull PushServiceSocket pushServiceSocket) {
|
||||
return new KeysApi(pushServiceSocket);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull AttachmentApi provideAttachmentApi(@NonNull SignalWebSocket signalWebSocket, @NonNull PushServiceSocket pushServiceSocket) {
|
||||
return new AttachmentApi(signalWebSocket, pushServiceSocket);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
static class DynamicCredentialsProvider implements CredentialsProvider {
|
||||
|
||||
|
|
|
@ -28,7 +28,9 @@ import org.whispersystems.signalservice.api.SignalServiceMessageReceiver
|
|||
import org.whispersystems.signalservice.api.SignalServiceMessageSender
|
||||
import org.whispersystems.signalservice.api.SignalWebSocket
|
||||
import org.whispersystems.signalservice.api.archive.ArchiveApi
|
||||
import org.whispersystems.signalservice.api.attachment.AttachmentApi
|
||||
import org.whispersystems.signalservice.api.groupsv2.GroupsV2Operations
|
||||
import org.whispersystems.signalservice.api.keys.KeysApi
|
||||
import org.whispersystems.signalservice.api.push.TrustStore
|
||||
import org.whispersystems.signalservice.api.services.CallLinksService
|
||||
import org.whispersystems.signalservice.api.services.DonationsService
|
||||
|
@ -128,6 +130,14 @@ class NetworkDependenciesModule(
|
|||
provider.provideArchiveApi(pushServiceSocket)
|
||||
}
|
||||
|
||||
val keysApi: KeysApi by lazy {
|
||||
provider.provideKeysApi(pushServiceSocket)
|
||||
}
|
||||
|
||||
val attachmentApi: AttachmentApi by lazy {
|
||||
provider.provideAttachmentApi(signalWebSocket, pushServiceSocket)
|
||||
}
|
||||
|
||||
val okHttpClient: OkHttpClient by lazy {
|
||||
OkHttpClient.Builder()
|
||||
.addInterceptor(StandardUserAgentInterceptor())
|
||||
|
|
|
@ -19,6 +19,7 @@ import org.thoughtcrime.securesms.dependencies.AppDependencies
|
|||
import org.thoughtcrime.securesms.jobmanager.Job
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint
|
||||
import org.thoughtcrime.securesms.jobs.protos.ArchiveAttachmentBackfillJobData
|
||||
import org.thoughtcrime.securesms.net.SignalNetwork
|
||||
import org.whispersystems.signalservice.api.NetworkResult
|
||||
import org.whispersystems.signalservice.api.archive.ArchiveMediaResponse
|
||||
import org.whispersystems.signalservice.api.archive.ArchiveMediaUploadFormStatusCodes
|
||||
|
@ -156,8 +157,7 @@ class ArchiveAttachmentBackfillJob private constructor(
|
|||
}
|
||||
|
||||
Log.d(TAG, "Beginning upload...")
|
||||
val attachmentApi = AppDependencies.signalServiceMessageSender.attachmentApi
|
||||
val uploadResult: AttachmentUploadResult = when (val result = attachmentApi.uploadAttachmentV4(attachmentStream)) {
|
||||
val uploadResult: AttachmentUploadResult = when (val result = SignalNetwork.attachments.uploadAttachmentV4(attachmentStream)) {
|
||||
is NetworkResult.Success -> result.result
|
||||
is NetworkResult.ApplicationError -> throw result.throwable
|
||||
is NetworkResult.NetworkError -> return Result.retry(defaultBackoff())
|
||||
|
|
|
@ -28,6 +28,7 @@ import org.thoughtcrime.securesms.jobmanager.persistence.JobSpec
|
|||
import org.thoughtcrime.securesms.jobs.protos.AttachmentUploadJobData
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||
import org.thoughtcrime.securesms.net.NotPushRegisteredException
|
||||
import org.thoughtcrime.securesms.net.SignalNetwork
|
||||
import org.thoughtcrime.securesms.recipients.Recipient
|
||||
import org.thoughtcrime.securesms.service.AttachmentProgressService
|
||||
import org.thoughtcrime.securesms.util.RemoteConfig
|
||||
|
@ -138,7 +139,6 @@ class AttachmentUploadJob private constructor(
|
|||
SignalDatabase.attachments.createKeyIvIfNecessary(attachmentId)
|
||||
|
||||
val messageSender = AppDependencies.signalServiceMessageSender
|
||||
val attachmentApi = messageSender.attachmentApi
|
||||
val databaseAttachment = SignalDatabase.attachments.getAttachment(attachmentId) ?: throw InvalidAttachmentException("Cannot find the specified attachment.")
|
||||
|
||||
val timeSinceUpload = System.currentTimeMillis() - databaseAttachment.uploadTimestamp
|
||||
|
@ -156,10 +156,10 @@ class AttachmentUploadJob private constructor(
|
|||
|
||||
if (uploadSpec == null) {
|
||||
Log.d(TAG, "Need an upload spec. Fetching...")
|
||||
uploadSpec = attachmentApi
|
||||
uploadSpec = SignalNetwork.attachments
|
||||
.getAttachmentV4UploadForm()
|
||||
.then { form ->
|
||||
attachmentApi.getResumableUploadSpec(
|
||||
SignalNetwork.attachments.getResumableUploadSpec(
|
||||
key = Base64.decode(databaseAttachment.remoteKey!!),
|
||||
iv = databaseAttachment.remoteIv!!,
|
||||
uploadForm = form
|
||||
|
@ -175,7 +175,7 @@ class AttachmentUploadJob private constructor(
|
|||
try {
|
||||
getAttachmentNotificationIfNeeded(databaseAttachment).use { notification ->
|
||||
buildAttachmentStream(databaseAttachment, notification, uploadSpec!!).use { localAttachment ->
|
||||
val uploadResult: AttachmentUploadResult = attachmentApi.uploadAttachmentV4(localAttachment).successOrThrow()
|
||||
val uploadResult: AttachmentUploadResult = SignalNetwork.attachments.uploadAttachmentV4(localAttachment).successOrThrow()
|
||||
SignalDatabase.attachments.finalizeAttachmentAfterUpload(databaseAttachment.attachmentId, uploadResult)
|
||||
ArchiveThumbnailUploadJob.enqueueIfNecessary(databaseAttachment.attachmentId)
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ import org.thoughtcrime.securesms.jobmanager.Job
|
|||
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint
|
||||
import org.thoughtcrime.securesms.jobs.protos.PreKeysSyncJobData
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||
import org.thoughtcrime.securesms.net.SignalNetwork
|
||||
import org.thoughtcrime.securesms.util.RemoteConfig
|
||||
import org.whispersystems.signalservice.api.NetworkResult
|
||||
import org.whispersystems.signalservice.api.SignalServiceAccountDataStore
|
||||
|
@ -261,7 +262,7 @@ class PreKeysSyncJob private constructor(
|
|||
@Throws(IOException::class)
|
||||
private fun checkPreKeyConsistency(serviceIdType: ServiceIdType, protocolStore: SignalServiceAccountDataStore, metadataStore: PreKeyMetadataStore): Boolean {
|
||||
val result: NetworkResult<Unit> = try {
|
||||
AppDependencies.signalServiceAccountManager.keysApi.checkRepeatedUseKeys(
|
||||
SignalNetwork.keys.checkRepeatedUseKeys(
|
||||
serviceIdType = serviceIdType,
|
||||
identityKey = protocolStore.identityKeyPair.publicKey,
|
||||
signedPreKeyId = metadataStore.activeSignedPreKeyId,
|
||||
|
|
|
@ -7,6 +7,8 @@ package org.thoughtcrime.securesms.net
|
|||
|
||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
||||
import org.whispersystems.signalservice.api.archive.ArchiveApi
|
||||
import org.whispersystems.signalservice.api.attachment.AttachmentApi
|
||||
import org.whispersystems.signalservice.api.keys.KeysApi
|
||||
|
||||
/**
|
||||
* A convenient way to access network operations, similar to [org.thoughtcrime.securesms.database.SignalDatabase] and [org.thoughtcrime.securesms.keyvalue.SignalStore].
|
||||
|
@ -14,4 +16,10 @@ import org.whispersystems.signalservice.api.archive.ArchiveApi
|
|||
object SignalNetwork {
|
||||
val archive: ArchiveApi
|
||||
get() = AppDependencies.archiveApi
|
||||
|
||||
val attachments: AttachmentApi
|
||||
get() = AppDependencies.attachmentApi
|
||||
|
||||
val keys: KeysApi
|
||||
get() = AppDependencies.keysApi
|
||||
}
|
||||
|
|
|
@ -39,7 +39,9 @@ import org.whispersystems.signalservice.api.SignalServiceMessageReceiver
|
|||
import org.whispersystems.signalservice.api.SignalServiceMessageSender
|
||||
import org.whispersystems.signalservice.api.SignalWebSocket
|
||||
import org.whispersystems.signalservice.api.archive.ArchiveApi
|
||||
import org.whispersystems.signalservice.api.attachment.AttachmentApi
|
||||
import org.whispersystems.signalservice.api.groupsv2.GroupsV2Operations
|
||||
import org.whispersystems.signalservice.api.keys.KeysApi
|
||||
import org.whispersystems.signalservice.api.services.CallLinksService
|
||||
import org.whispersystems.signalservice.api.services.DonationsService
|
||||
import org.whispersystems.signalservice.api.services.ProfileService
|
||||
|
@ -207,4 +209,12 @@ class MockApplicationDependencyProvider : AppDependencies.Provider {
|
|||
override fun provideArchiveApi(pushServiceSocket: PushServiceSocket): ArchiveApi {
|
||||
return mockk()
|
||||
}
|
||||
|
||||
override fun provideKeysApi(pushServiceSocket: PushServiceSocket): KeysApi {
|
||||
return mockk()
|
||||
}
|
||||
|
||||
override fun provideAttachmentApi(signalWebSocket: SignalWebSocket, pushServiceSocket: PushServiceSocket): AttachmentApi {
|
||||
return mockk()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -862,10 +862,6 @@ public class SignalServiceAccountManager {
|
|||
return new GroupsV2Api(pushServiceSocket, groupsV2Operations);
|
||||
}
|
||||
|
||||
public KeysApi getKeysApi() {
|
||||
return KeysApi.create(pushServiceSocket);
|
||||
}
|
||||
|
||||
public RegistrationApi getRegistrationApi() {
|
||||
return new RegistrationApi(pushServiceSocket);
|
||||
}
|
||||
|
|
|
@ -213,10 +213,6 @@ public class SignalServiceMessageSender {
|
|||
this.scheduler = Schedulers.from(executor, false, false);
|
||||
}
|
||||
|
||||
public AttachmentApi getAttachmentApi() {
|
||||
return AttachmentApi.create(webSocket, socket);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a read receipt for a received message.
|
||||
*
|
||||
|
|
Loading…
Add table
Reference in a new issue