Create separate API for authenticated auth requests (#868)

This commit is contained in:
David Perez 2024-01-30 11:21:47 -06:00 committed by Álison Fernandes
parent 2be6c9042f
commit 238a16652b
7 changed files with 38 additions and 28 deletions

View file

@ -1,26 +1,16 @@
package com.x8bit.bitwarden.data.auth.datasource.network.api
import com.x8bit.bitwarden.data.auth.datasource.network.model.AuthRequestRequestJson
import com.x8bit.bitwarden.data.auth.datasource.network.model.AuthRequestUpdateRequestJson
import com.x8bit.bitwarden.data.auth.datasource.network.model.AuthRequestsResponseJson
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.POST
import retrofit2.http.PUT
import retrofit2.http.Path
/**
* Defines raw calls under the /auth-requests API.
* Defines authenticated raw calls under the /auth-requests API.
*/
interface AuthRequestsApi {
/**
* Notifies the server of a new authentication request.
*/
@POST("/auth-requests")
suspend fun createAuthRequest(
@Body body: AuthRequestRequestJson,
): Result<AuthRequestsResponseJson.AuthRequest>
interface AuthenticatedAuthRequestsApi {
/**
* Updates an authentication request.

View file

@ -0,0 +1,20 @@
package com.x8bit.bitwarden.data.auth.datasource.network.api
import com.x8bit.bitwarden.data.auth.datasource.network.model.AuthRequestRequestJson
import com.x8bit.bitwarden.data.auth.datasource.network.model.AuthRequestsResponseJson
import retrofit2.http.Body
import retrofit2.http.POST
/**
* Defines unauthenticated raw calls under the /auth-requests API.
*/
interface UnauthenticatedAuthRequestsApi {
/**
* Notifies the server of a new authentication request.
*/
@POST("/auth-requests")
suspend fun createAuthRequest(
@Body body: AuthRequestRequestJson,
): Result<AuthRequestsResponseJson.AuthRequest>
}

View file

@ -46,7 +46,7 @@ object AuthNetworkModule {
fun providesAuthRequestsService(
retrofits: Retrofits,
): AuthRequestsService = AuthRequestsServiceImpl(
authRequestsApi = retrofits.authenticatedApiRetrofit.create(),
authenticatedAuthRequestsApi = retrofits.authenticatedApiRetrofit.create(),
)
@Provides
@ -84,7 +84,7 @@ object AuthNetworkModule {
fun providesNewAuthRequestService(
retrofits: Retrofits,
): NewAuthRequestService = NewAuthRequestServiceImpl(
authRequestsApi = retrofits.unauthenticatedApiRetrofit.create(),
unauthenticatedAuthRequestsApi = retrofits.unauthenticatedApiRetrofit.create(),
)
@Provides
@ -92,6 +92,6 @@ object AuthNetworkModule {
fun providesOrganizationService(
retrofits: Retrofits,
): OrganizationService = OrganizationServiceImpl(
organizationApi = retrofits.unauthenticatedApiRetrofit.create(),
organizationApi = retrofits.unauthenticatedApiRetrofit.create(),
)
}

View file

@ -1,14 +1,14 @@
package com.x8bit.bitwarden.data.auth.datasource.network.service
import com.x8bit.bitwarden.data.auth.datasource.network.api.AuthRequestsApi
import com.x8bit.bitwarden.data.auth.datasource.network.api.AuthenticatedAuthRequestsApi
import com.x8bit.bitwarden.data.auth.datasource.network.model.AuthRequestUpdateRequestJson
import com.x8bit.bitwarden.data.auth.datasource.network.model.AuthRequestsResponseJson
class AuthRequestsServiceImpl(
private val authRequestsApi: AuthRequestsApi,
private val authenticatedAuthRequestsApi: AuthenticatedAuthRequestsApi,
) : AuthRequestsService {
override suspend fun getAuthRequests(): Result<AuthRequestsResponseJson> =
authRequestsApi.getAuthRequests()
authenticatedAuthRequestsApi.getAuthRequests()
override suspend fun updateAuthRequest(
requestId: String,
@ -17,7 +17,7 @@ class AuthRequestsServiceImpl(
deviceId: String,
isApproved: Boolean,
): Result<AuthRequestsResponseJson.AuthRequest> =
authRequestsApi.updateAuthRequest(
authenticatedAuthRequestsApi.updateAuthRequest(
userId = requestId,
body = AuthRequestUpdateRequestJson(
key = key,

View file

@ -1,6 +1,6 @@
package com.x8bit.bitwarden.data.auth.datasource.network.service
import com.x8bit.bitwarden.data.auth.datasource.network.api.AuthRequestsApi
import com.x8bit.bitwarden.data.auth.datasource.network.api.UnauthenticatedAuthRequestsApi
import com.x8bit.bitwarden.data.auth.datasource.network.model.AuthRequestRequestJson
import com.x8bit.bitwarden.data.auth.datasource.network.model.AuthRequestTypeJson
import com.x8bit.bitwarden.data.auth.datasource.network.model.AuthRequestsResponseJson
@ -9,7 +9,7 @@ import com.x8bit.bitwarden.data.auth.datasource.network.model.AuthRequestsRespon
* The default implementation of the [NewAuthRequestService].
*/
class NewAuthRequestServiceImpl(
private val authRequestsApi: AuthRequestsApi,
private val unauthenticatedAuthRequestsApi: UnauthenticatedAuthRequestsApi,
) : NewAuthRequestService {
override suspend fun createAuthRequest(
email: String,
@ -18,7 +18,7 @@ class NewAuthRequestServiceImpl(
accessCode: String,
fingerprint: String,
): Result<AuthRequestsResponseJson.AuthRequest> =
authRequestsApi.createAuthRequest(
unauthenticatedAuthRequestsApi.createAuthRequest(
AuthRequestRequestJson(
email = email,
publicKey = publicKey,

View file

@ -1,6 +1,6 @@
package com.x8bit.bitwarden.data.auth.datasource.network.service
import com.x8bit.bitwarden.data.auth.datasource.network.api.AuthRequestsApi
import com.x8bit.bitwarden.data.auth.datasource.network.api.AuthenticatedAuthRequestsApi
import com.x8bit.bitwarden.data.auth.datasource.network.model.AuthRequestsResponseJson
import com.x8bit.bitwarden.data.platform.base.BaseServiceTest
import kotlinx.coroutines.test.runTest
@ -13,9 +13,9 @@ import java.time.ZonedDateTime
class AuthRequestsServiceTest : BaseServiceTest() {
private val authRequestsApi: AuthRequestsApi = retrofit.create()
private val authRequestsApi: AuthenticatedAuthRequestsApi = retrofit.create()
private val service = AuthRequestsServiceImpl(
authRequestsApi = authRequestsApi,
authenticatedAuthRequestsApi = authRequestsApi,
)
@Test

View file

@ -1,6 +1,6 @@
package com.x8bit.bitwarden.data.auth.datasource.network.service
import com.x8bit.bitwarden.data.auth.datasource.network.api.AuthRequestsApi
import com.x8bit.bitwarden.data.auth.datasource.network.api.UnauthenticatedAuthRequestsApi
import com.x8bit.bitwarden.data.auth.datasource.network.model.AuthRequestsResponseJson
import com.x8bit.bitwarden.data.platform.base.BaseServiceTest
import kotlinx.coroutines.test.runTest
@ -13,9 +13,9 @@ import java.time.ZonedDateTime
class NewAuthRequestServiceTest : BaseServiceTest() {
private val authRequestsApi: AuthRequestsApi = retrofit.create()
private val authRequestsApi: UnauthenticatedAuthRequestsApi = retrofit.create()
private val service = NewAuthRequestServiceImpl(
authRequestsApi = authRequestsApi,
unauthenticatedAuthRequestsApi = authRequestsApi,
)
@Test