[PM-20193] Migrate DownloadService to network module (#5053)

This commit is contained in:
Patrick Honkonen
2025-04-16 12:46:30 -04:00
committed by GitHub
parent 0be26c1eda
commit 36e6fbc14c
6 changed files with 7 additions and 7 deletions

View File

@@ -2,11 +2,11 @@ package com.x8bit.bitwarden.data.vault.datasource.network.di
import com.bitwarden.network.service.CiphersService
import com.bitwarden.network.service.CiphersServiceImpl
import com.bitwarden.network.service.DownloadService
import com.bitwarden.network.service.DownloadServiceImpl
import com.bitwarden.network.service.FolderService
import com.bitwarden.network.service.FolderServiceImpl
import com.x8bit.bitwarden.data.platform.datasource.network.retrofit.Retrofits
import com.x8bit.bitwarden.data.vault.datasource.network.service.DownloadService
import com.x8bit.bitwarden.data.vault.datasource.network.service.DownloadServiceImpl
import com.x8bit.bitwarden.data.vault.datasource.network.service.SendsService
import com.x8bit.bitwarden.data.vault.datasource.network.service.SendsServiceImpl
import com.x8bit.bitwarden.data.vault.datasource.network.service.SyncService

View File

@@ -1,13 +0,0 @@
package com.x8bit.bitwarden.data.vault.datasource.network.service
import okhttp3.ResponseBody
/**
* Provides an API for querying arbitrary endpoints.
*/
interface DownloadService {
/**
* Streams data from [url], returning a raw [ResponseBody].
*/
suspend fun getDataStream(url: String): Result<ResponseBody>
}

View File

@@ -1,19 +0,0 @@
package com.x8bit.bitwarden.data.vault.datasource.network.service
import com.bitwarden.network.api.DownloadApi
import com.bitwarden.network.util.toResult
import okhttp3.ResponseBody
/**
* Default implementation of [DownloadService].
*/
class DownloadServiceImpl(
private val downloadApi: DownloadApi,
) : DownloadService {
override suspend fun getDataStream(
url: String,
): Result<ResponseBody> =
downloadApi
.getDataStream(url = url)
.toResult()
}

View File

@@ -6,8 +6,8 @@ import android.content.Context
import android.net.Uri
import com.bitwarden.core.annotation.OmitFromCoverage
import com.bitwarden.data.manager.DispatcherManager
import com.bitwarden.network.service.DownloadService
import com.x8bit.bitwarden.data.platform.util.sdkAgnosticTransferTo
import com.x8bit.bitwarden.data.vault.datasource.network.service.DownloadService
import com.x8bit.bitwarden.data.vault.manager.model.DownloadResult
import com.x8bit.bitwarden.data.vault.manager.model.ZipFileResult
import kotlinx.coroutines.withContext

View File

@@ -3,6 +3,7 @@ package com.x8bit.bitwarden.data.vault.manager.di
import android.content.Context
import com.bitwarden.data.manager.DispatcherManager
import com.bitwarden.network.service.CiphersService
import com.bitwarden.network.service.DownloadService
import com.x8bit.bitwarden.data.auth.datasource.disk.AuthDiskSource
import com.x8bit.bitwarden.data.auth.datasource.sdk.AuthSdkSource
import com.x8bit.bitwarden.data.auth.manager.TrustedDeviceManager
@@ -11,7 +12,6 @@ import com.x8bit.bitwarden.data.platform.manager.AppStateManager
import com.x8bit.bitwarden.data.platform.manager.ReviewPromptManager
import com.x8bit.bitwarden.data.platform.repository.SettingsRepository
import com.x8bit.bitwarden.data.vault.datasource.disk.VaultDiskSource
import com.x8bit.bitwarden.data.vault.datasource.network.service.DownloadService
import com.x8bit.bitwarden.data.vault.datasource.sdk.VaultSdkSource
import com.x8bit.bitwarden.data.vault.manager.CipherManager
import com.x8bit.bitwarden.data.vault.manager.CipherManagerImpl

View File

@@ -1,32 +0,0 @@
package com.x8bit.bitwarden.data.vault.datasource.network.service
import com.bitwarden.network.api.DownloadApi
import com.bitwarden.network.base.BaseServiceTest
import kotlinx.coroutines.test.runTest
import okhttp3.mockwebserver.MockResponse
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.api.Test
import retrofit2.create
class DownloadServiceTest : BaseServiceTest() {
private val downloadApi: DownloadApi = retrofit.create()
private val downloadService: DownloadService = DownloadServiceImpl(
downloadApi = downloadApi,
)
@Test
fun `getDataStream should return a raw stream RespondBody`() = runTest {
server.enqueue(
MockResponse()
.setResponseCode(200)
.setBody("Bitwarden")
.setHeader("Content-Type", "application/stream"),
)
val url = "/test-url"
val result = downloadService.getDataStream(url)
assertTrue(result.isSuccess)
assertEquals("Bitwarden", String(result.getOrThrow().bytes()))
}
}