[PM-19783] Migrate ConfigApi and ConfigResponseJson to network module (#4964)

This commit is contained in:
Patrick Honkonen
2025-04-02 16:07:41 -04:00
committed by GitHub
parent f43702cb83
commit d70e658c8b
23 changed files with 42 additions and 138 deletions

View File

@@ -1,6 +1,6 @@
package com.bitwarden.authenticator.data.platform.datasource.disk.model
import com.bitwarden.authenticator.data.platform.datasource.network.model.ConfigResponseJson
import com.bitwarden.network.model.ConfigResponseJson
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

View File

@@ -1,14 +0,0 @@
package com.bitwarden.authenticator.data.platform.datasource.network.api
import com.bitwarden.authenticator.data.platform.datasource.network.model.ConfigResponseJson
import com.bitwarden.network.model.NetworkResult
import retrofit2.http.GET
/**
* This interface defines the API service for fetching configuration data.
*/
interface ConfigApi {
@GET("config")
suspend fun getConfig(): NetworkResult<ConfigResponseJson>
}

View File

@@ -1,82 +0,0 @@
package com.bitwarden.authenticator.data.platform.datasource.network.model
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonPrimitive
/**
* Represents the response model for configuration data fetched from the server.
*
* @property type The object type, typically "config".
* @property version The version of the configuration data.
* @property gitHash The Git hash associated with the configuration data.
* @property server The server information (nullable).
* @property environment The environment information containing URLs (vault, api, identity, etc.).
* @property featureStates A map containing various feature states.
*/
@Serializable
data class ConfigResponseJson(
@SerialName("object")
val type: String?,
@SerialName("version")
val version: String?,
@SerialName("gitHash")
val gitHash: String?,
@SerialName("server")
val server: ServerJson?,
@SerialName("environment")
val environment: EnvironmentJson?,
@SerialName("featureStates")
val featureStates: Map<String, JsonPrimitive>?,
) {
/**
* Represents a server in the configuration response.
*
* @param name The name of the server.
* @param url The URL of the server.
*/
@Serializable
data class ServerJson(
@SerialName("name")
val name: String?,
@SerialName("url")
val url: String?,
)
/**
* Represents the environment details in the configuration response.
*
* @param cloudRegion The cloud region associated with the environment.
* @param vaultUrl The URL of the vault service in the environment.
* @param apiUrl The URL of the API service in the environment.
* @param identityUrl The URL of the identity service in the environment.
* @param notificationsUrl The URL of the notifications service in the environment.
* @param ssoUrl The URL of the single sign-on (SSO) service in the environment.
*/
@Serializable
data class EnvironmentJson(
@SerialName("cloudRegion")
val cloudRegion: String?,
@SerialName("vault")
val vaultUrl: String?,
@SerialName("api")
val apiUrl: String?,
@SerialName("identity")
val identityUrl: String?,
@SerialName("notifications")
val notificationsUrl: String?,
@SerialName("sso")
val ssoUrl: String?,
)
}

View File

@@ -1,6 +1,6 @@
package com.bitwarden.authenticator.data.platform.datasource.network.service
import com.bitwarden.authenticator.data.platform.datasource.network.model.ConfigResponseJson
import com.bitwarden.network.model.ConfigResponseJson
/**
* Provides an API for querying for app configurations.

View File

@@ -1,7 +1,7 @@
package com.bitwarden.authenticator.data.platform.datasource.network.service
import com.bitwarden.authenticator.data.platform.datasource.network.api.ConfigApi
import com.bitwarden.authenticator.data.platform.datasource.network.model.ConfigResponseJson
import com.bitwarden.network.api.ConfigApi
import com.bitwarden.network.model.ConfigResponseJson
import com.bitwarden.network.util.toResult
/**

View File

@@ -4,10 +4,10 @@ import androidx.core.content.edit
import app.cash.turbine.test
import com.bitwarden.authenticator.data.platform.base.FakeSharedPreferences
import com.bitwarden.authenticator.data.platform.datasource.disk.model.ServerConfig
import com.bitwarden.authenticator.data.platform.datasource.network.model.ConfigResponseJson
import com.bitwarden.authenticator.data.platform.datasource.network.model.ConfigResponseJson.EnvironmentJson
import com.bitwarden.authenticator.data.platform.datasource.network.model.ConfigResponseJson.ServerJson
import com.bitwarden.core.di.CoreModule
import com.bitwarden.network.model.ConfigResponseJson
import com.bitwarden.network.model.ConfigResponseJson.EnvironmentJson
import com.bitwarden.network.model.ConfigResponseJson.ServerJson
import kotlinx.coroutines.test.runTest
import kotlinx.serialization.json.JsonPrimitive
import org.junit.jupiter.api.Assertions.assertEquals

View File

@@ -1,9 +1,9 @@
package com.bitwarden.authenticator.data.platform.datasource.network.service
import com.bitwarden.authenticator.data.platform.base.BaseServiceTest
import com.bitwarden.authenticator.data.platform.datasource.network.api.ConfigApi
import com.bitwarden.authenticator.data.platform.datasource.network.model.ConfigResponseJson
import com.bitwarden.core.data.util.asSuccess
import com.bitwarden.network.api.ConfigApi
import com.bitwarden.network.model.ConfigResponseJson
import kotlinx.coroutines.test.runTest
import kotlinx.serialization.json.JsonPrimitive
import okhttp3.mockwebserver.MockResponse

View File

@@ -2,11 +2,11 @@ package com.bitwarden.authenticator.data.platform.manager
import app.cash.turbine.test
import com.bitwarden.authenticator.data.platform.datasource.disk.model.ServerConfig
import com.bitwarden.authenticator.data.platform.datasource.network.model.ConfigResponseJson
import com.bitwarden.authenticator.data.platform.datasource.network.model.ConfigResponseJson.EnvironmentJson
import com.bitwarden.authenticator.data.platform.datasource.network.model.ConfigResponseJson.ServerJson
import com.bitwarden.authenticator.data.platform.manager.model.FlagKey
import com.bitwarden.authenticator.data.platform.repository.util.FakeServerConfigRepository
import com.bitwarden.network.model.ConfigResponseJson
import com.bitwarden.network.model.ConfigResponseJson.EnvironmentJson
import com.bitwarden.network.model.ConfigResponseJson.ServerJson
import kotlinx.coroutines.test.runTest
import kotlinx.serialization.json.JsonPrimitive
import org.junit.Test

View File

@@ -3,8 +3,8 @@ package com.bitwarden.authenticator.data.platform.repository
import app.cash.turbine.test
import com.bitwarden.authenticator.data.platform.datasource.disk.FeatureFlagOverrideDiskSource
import com.bitwarden.authenticator.data.platform.datasource.disk.model.ServerConfig
import com.bitwarden.authenticator.data.platform.datasource.network.model.ConfigResponseJson
import com.bitwarden.authenticator.data.platform.manager.model.FlagKey
import com.bitwarden.network.model.ConfigResponseJson
import io.mockk.every
import io.mockk.just
import io.mockk.mockk

View File

@@ -4,12 +4,12 @@ import app.cash.turbine.test
import com.bitwarden.authenticator.data.platform.base.FakeDispatcherManager
import com.bitwarden.authenticator.data.platform.datasource.disk.model.ServerConfig
import com.bitwarden.authenticator.data.platform.datasource.disk.util.FakeConfigDiskSource
import com.bitwarden.authenticator.data.platform.datasource.network.model.ConfigResponseJson
import com.bitwarden.authenticator.data.platform.datasource.network.model.ConfigResponseJson.EnvironmentJson
import com.bitwarden.authenticator.data.platform.datasource.network.model.ConfigResponseJson.ServerJson
import com.bitwarden.authenticator.data.platform.datasource.network.service.ConfigService
import com.bitwarden.authenticator.data.platform.manager.DispatcherManager
import com.bitwarden.core.data.util.asSuccess
import com.bitwarden.network.model.ConfigResponseJson
import com.bitwarden.network.model.ConfigResponseJson.EnvironmentJson
import com.bitwarden.network.model.ConfigResponseJson.ServerJson
import io.mockk.coEvery
import io.mockk.mockk
import kotlinx.coroutines.test.runTest

View File

@@ -1,10 +1,10 @@
package com.bitwarden.authenticator.data.platform.repository.util
import com.bitwarden.authenticator.data.platform.datasource.disk.model.ServerConfig
import com.bitwarden.authenticator.data.platform.datasource.network.model.ConfigResponseJson
import com.bitwarden.authenticator.data.platform.datasource.network.model.ConfigResponseJson.EnvironmentJson
import com.bitwarden.authenticator.data.platform.datasource.network.model.ConfigResponseJson.ServerJson
import com.bitwarden.authenticator.data.platform.repository.ServerConfigRepository
import com.bitwarden.network.model.ConfigResponseJson
import com.bitwarden.network.model.ConfigResponseJson.EnvironmentJson
import com.bitwarden.network.model.ConfigResponseJson.ServerJson
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.serialization.json.JsonPrimitive