Loading app/build.gradle +1 −1 Original line number Diff line number Diff line Loading @@ -146,7 +146,7 @@ allOpen { } dependencies { implementation project(":modules") // TODO: Add splitinstall-lib to a repo https://gitlab.e.foundation/e/os/backlog/-/issues/628 api files('libs/splitinstall-lib.jar') Loading app/src/main/java/foundation/e/apps/domain/login/AuthTokenPlayResponseParser.kt 0 → 100644 +17 −0 Original line number Diff line number Diff line package foundation.e.apps.domain.login import java.util.StringTokenizer object AuthTokenPlayResponseParser { fun parseResponse(response: String?): Map<String, String> { val keyValueMap: MutableMap<String, String> = HashMap() val st = StringTokenizer(response, "\n\r") while (st.hasMoreTokens()) { val keyValue = st.nextToken().split("=") if (keyValue.size >= 2) { keyValueMap[keyValue[0]] = keyValue[1] } } return keyValueMap } } No newline at end of file app/src/main/java/foundation/e/apps/domain/login/GoogleLoginRepository.kt 0 → 100644 +8 −0 Original line number Diff line number Diff line package foundation.e.apps.domain.login import com.aurora.gplayapi.data.models.AuthData interface GoogleLoginRepository { suspend fun getGoogleLoginAuthData(email: String, oauthToken: String): AuthData? suspend fun validate(): Boolean } No newline at end of file app/src/main/java/foundation/e/apps/domain/login/GoogleLoginRepositoryImpl.kt 0 → 100644 +46 −0 Original line number Diff line number Diff line package foundation.e.apps.domain.login import app.lounge.login.google.GoogleLoginApi import app.lounge.networking.NetworkResult import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.PlayResponse import com.aurora.gplayapi.helpers.AuthHelper import timber.log.Timber import java.lang.Exception import java.util.Properties import javax.inject.Inject class GoogleLoginRepositoryImpl @Inject constructor( private val googleLoginApi: GoogleLoginApi, private val properties: Properties ) : GoogleLoginRepository { override suspend fun getGoogleLoginAuthData(email: String, oauthToken: String): AuthData? { val result = googleLoginApi.getAuthTokenPlayResponse(email, oauthToken) return when (result) { is NetworkResult.Success -> handleAuthTokenPlayResponseSuccess(result, email) is NetworkResult.Error -> throw Exception(result.errorMessage, result.exception) } } private fun handleAuthTokenPlayResponseSuccess( result: NetworkResult.Success<PlayResponse>, email: String ): AuthData? { if (result.data.isSuccessful) { val parsedResult = AuthTokenPlayResponseParser.parseResponse(String(result.data.responseBytes)) val token = parsedResult["Token"] ?: "" Timber.d("Parsed token: $token") //TODO save token in the preferences return AuthHelper.build(email, token, properties) } return null } override suspend fun validate(): Boolean { val authData = AuthHelper.build("", "") // TODO authdata will be fetched from preferences val result = googleLoginApi.validate(authData) return result is NetworkResult.Success && result.data } } No newline at end of file Loading
app/build.gradle +1 −1 Original line number Diff line number Diff line Loading @@ -146,7 +146,7 @@ allOpen { } dependencies { implementation project(":modules") // TODO: Add splitinstall-lib to a repo https://gitlab.e.foundation/e/os/backlog/-/issues/628 api files('libs/splitinstall-lib.jar') Loading
app/src/main/java/foundation/e/apps/domain/login/AuthTokenPlayResponseParser.kt 0 → 100644 +17 −0 Original line number Diff line number Diff line package foundation.e.apps.domain.login import java.util.StringTokenizer object AuthTokenPlayResponseParser { fun parseResponse(response: String?): Map<String, String> { val keyValueMap: MutableMap<String, String> = HashMap() val st = StringTokenizer(response, "\n\r") while (st.hasMoreTokens()) { val keyValue = st.nextToken().split("=") if (keyValue.size >= 2) { keyValueMap[keyValue[0]] = keyValue[1] } } return keyValueMap } } No newline at end of file
app/src/main/java/foundation/e/apps/domain/login/GoogleLoginRepository.kt 0 → 100644 +8 −0 Original line number Diff line number Diff line package foundation.e.apps.domain.login import com.aurora.gplayapi.data.models.AuthData interface GoogleLoginRepository { suspend fun getGoogleLoginAuthData(email: String, oauthToken: String): AuthData? suspend fun validate(): Boolean } No newline at end of file
app/src/main/java/foundation/e/apps/domain/login/GoogleLoginRepositoryImpl.kt 0 → 100644 +46 −0 Original line number Diff line number Diff line package foundation.e.apps.domain.login import app.lounge.login.google.GoogleLoginApi import app.lounge.networking.NetworkResult import com.aurora.gplayapi.data.models.AuthData import com.aurora.gplayapi.data.models.PlayResponse import com.aurora.gplayapi.helpers.AuthHelper import timber.log.Timber import java.lang.Exception import java.util.Properties import javax.inject.Inject class GoogleLoginRepositoryImpl @Inject constructor( private val googleLoginApi: GoogleLoginApi, private val properties: Properties ) : GoogleLoginRepository { override suspend fun getGoogleLoginAuthData(email: String, oauthToken: String): AuthData? { val result = googleLoginApi.getAuthTokenPlayResponse(email, oauthToken) return when (result) { is NetworkResult.Success -> handleAuthTokenPlayResponseSuccess(result, email) is NetworkResult.Error -> throw Exception(result.errorMessage, result.exception) } } private fun handleAuthTokenPlayResponseSuccess( result: NetworkResult.Success<PlayResponse>, email: String ): AuthData? { if (result.data.isSuccessful) { val parsedResult = AuthTokenPlayResponseParser.parseResponse(String(result.data.responseBytes)) val token = parsedResult["Token"] ?: "" Timber.d("Parsed token: $token") //TODO save token in the preferences return AuthHelper.build(email, token, properties) } return null } override suspend fun validate(): Boolean { val authData = AuthHelper.build("", "") // TODO authdata will be fetched from preferences val result = googleLoginApi.validate(authData) return result is NetworkResult.Success && result.data } } No newline at end of file