From 54740a10b796fec7e99564f291761f08a12fe99c Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Mon, 28 Nov 2022 15:38:14 +0530 Subject: [PATCH 1/6] add network code for validation --- .../java/foundation/e/apps/login/LoginSourceGPlay.kt | 10 +++++++--- .../foundation/e/apps/login/api/AnonymousLoginApi.kt | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/login/LoginSourceGPlay.kt b/app/src/main/java/foundation/e/apps/login/LoginSourceGPlay.kt index 27222dace..dbac889c9 100644 --- a/app/src/main/java/foundation/e/apps/login/LoginSourceGPlay.kt +++ b/app/src/main/java/foundation/e/apps/login/LoginSourceGPlay.kt @@ -227,9 +227,13 @@ class LoginSourceGPlay @Inject constructor( ResultSupreme.Success(formattedAuthData) } else { val message = - "Validating AuthData failed.\n\n" + - "Success: ${playResponse?.isSuccessful}" + - (validityResponse.exception?.let { "\n${it.message}" } ?: "") + "Validating AuthData failed.\n" + + "Network code: ${playResponse?.code}\n" + + "Success: ${playResponse?.isSuccessful}" + + playResponse?.errorString?.run { + if (isNotBlank()) "\nError message: $this" + else "" + } ResultSupreme.Error( message, diff --git a/app/src/main/java/foundation/e/apps/login/api/AnonymousLoginApi.kt b/app/src/main/java/foundation/e/apps/login/api/AnonymousLoginApi.kt index 70d795a89..b75a6bdfd 100644 --- a/app/src/main/java/foundation/e/apps/login/api/AnonymousLoginApi.kt +++ b/app/src/main/java/foundation/e/apps/login/api/AnonymousLoginApi.kt @@ -55,7 +55,7 @@ class AnonymousLoginApi( "Network code: ${response.code}\n" + "Success: ${response.isSuccessful}" + response.errorString.run { - if (isNotBlank()) "\nError message: ${response.errorString}" + if (isNotBlank()) "\nError message: $this" else "" } ) -- GitLab From 8c1424f5c81144542788d34d54e7fc23d81324b1 Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Mon, 28 Nov 2022 16:40:27 +0530 Subject: [PATCH 2/6] update internetConnection to use host http://204.ecloud.global --- .../java/foundation/e/apps/MainActivityViewModel.kt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt b/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt index f1b93d07e..90b8fea34 100644 --- a/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt +++ b/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt @@ -56,6 +56,8 @@ import kotlinx.coroutines.launch import ru.beryukhov.reactivenetwork.ReactiveNetwork import java.io.ByteArrayOutputStream import javax.inject.Inject +import ru.beryukhov.reactivenetwork.internet.observing.InternetObservingSettings +import ru.beryukhov.reactivenetwork.internet.observing.strategy.SocketInternetObservingStrategy @HiltViewModel class MainActivityViewModel @Inject constructor( @@ -331,7 +333,14 @@ class MainActivityViewModel @Inject constructor( } val internetConnection = liveData { - emitSource(ReactiveNetwork().observeInternetConnectivity().asLiveData(Dispatchers.Default)) + emitSource( + ReactiveNetwork().observeInternetConnectivity( + InternetObservingSettings.builder() + .host("http://204.ecloud.global") + .strategy(SocketInternetObservingStrategy()) + .build() + ).asLiveData(Dispatchers.Default) + ) } fun updateStatusOfFusedApps( -- GitLab From ed7d6be98b1ec049df0cea1a5e128ca2a9e50a1e Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Tue, 29 Nov 2022 00:58:16 +0530 Subject: [PATCH 3/6] setup BUILD_ID in gradle --- app/build.gradle | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/app/build.gradle b/app/build.gradle index 24d8bf9a8..718b7bd33 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,6 +12,21 @@ def versionMajor = 2 def versionMinor = 4 def versionPatch = 0 +// https://stackoverflow.com/a/35041457 +def getGitHash = { -> + def stdOut = new ByteArrayOutputStream() + exec { + commandLine 'git', 'rev-parse', '--short', 'HEAD' + standardOutput = stdOut + } + return stdOut.toString().trim() +} + +// https://stackoverflow.com/a/19184323 +def getDate = { -> + return new Date().format('yyyyMMddHHmmss') +} + android { compileSdk 31 @@ -22,6 +37,8 @@ android { versionCode versionMajor * 1000000 + versionMinor * 1000 + versionPatch versionName "${versionMajor}.${versionMinor}.${versionPatch}" + buildConfigField "String", "BUILD_ID", "\"${getGitHash() + "." + getDate()}\"" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } -- GitLab From 27df2cb04a5e1ab36e90908afab0143265ceb35e Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Tue, 29 Nov 2022 01:00:31 +0530 Subject: [PATCH 4/6] getAppBuildInfo() in CommonUtilsFunctions. Pass it as User-Agent. --- .../main/java/foundation/e/apps/MainActivity.kt | 10 ++-------- .../e/apps/api/gplay/utils/GPlayHttpClient.kt | 5 +++++ .../e/apps/utils/modules/CommonUtilsFunctions.kt | 15 +++++++++++++++ 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/MainActivity.kt b/app/src/main/java/foundation/e/apps/MainActivity.kt index 2b5c86955..9bbda7614 100644 --- a/app/src/main/java/foundation/e/apps/MainActivity.kt +++ b/app/src/main/java/foundation/e/apps/MainActivity.kt @@ -54,6 +54,7 @@ import foundation.e.apps.utils.enums.Status import foundation.e.apps.utils.eventBus.AppEvent import foundation.e.apps.utils.eventBus.EventBus import foundation.e.apps.utils.exceptions.GPlayValidationException +import foundation.e.apps.utils.modules.CommonUtilsFunctions import foundation.e.apps.utils.modules.CommonUtilsModule import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.filter @@ -129,14 +130,7 @@ class MainActivity : AppCompatActivity() { viewModel.gPlayAuthData = data as AuthData } else if (exception is GPlayValidationException) { val email = otherPayload.toString() - val descriptionJson = JSONObject().apply { - put("versionName", BuildConfig.VERSION_NAME) - put("versionCode", BuildConfig.VERSION_CODE) - put("debuggable", BuildConfig.DEBUG) - put("device", Build.DEVICE) - put("api", Build.VERSION.SDK_INT) - } - viewModel.uploadFaultyTokenToEcloud(email, descriptionJson.toString()) + viewModel.uploadFaultyTokenToEcloud(email, CommonUtilsFunctions.getAppBuildInfo()) } } } diff --git a/app/src/main/java/foundation/e/apps/api/gplay/utils/GPlayHttpClient.kt b/app/src/main/java/foundation/e/apps/api/gplay/utils/GPlayHttpClient.kt index 8b222cae7..6725e07b1 100644 --- a/app/src/main/java/foundation/e/apps/api/gplay/utils/GPlayHttpClient.kt +++ b/app/src/main/java/foundation/e/apps/api/gplay/utils/GPlayHttpClient.kt @@ -21,6 +21,7 @@ package foundation.e.apps.api.gplay.utils import com.aurora.gplayapi.data.models.PlayResponse import com.aurora.gplayapi.network.IHttpClient +import foundation.e.apps.utils.modules.CommonUtilsFunctions import okhttp3.Cache import okhttp3.Headers.Companion.toHeaders import okhttp3.HttpUrl @@ -81,7 +82,11 @@ class GPlayHttpClient @Inject constructor( override fun postAuth(url: String, body: ByteArray): PlayResponse { val requestBody = body.toRequestBody("application/json".toMediaType(), 0, body.size) + val headers = mapOf( + "User-Agent" to CommonUtilsFunctions.getAppBuildInfo() + ) val request = Request.Builder() + .headers(headers.toHeaders()) .url(url) .method(POST, requestBody) .build() diff --git a/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsFunctions.kt b/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsFunctions.kt index adf4d1552..d6b603f05 100644 --- a/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsFunctions.kt +++ b/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsFunctions.kt @@ -20,7 +20,10 @@ package foundation.e.apps.utils.modules import android.annotation.SuppressLint import android.content.ClipData import android.content.ClipboardManager +import android.os.Build +import foundation.e.apps.BuildConfig import java.lang.Exception +import org.json.JSONObject object CommonUtilsFunctions { @@ -49,4 +52,16 @@ object CommonUtilsFunctions { } return value } + + fun getAppBuildInfo(): String { + val descriptionJson = JSONObject().apply { + put("package", BuildConfig.APPLICATION_ID) + put("version", BuildConfig.VERSION_NAME) + put("device", Build.DEVICE) + put("api", Build.VERSION.SDK_INT) + put("os_version", getSystemProperty("ro.lineage.version")) + put("build_id", BuildConfig.BUILD_ID) + } + return descriptionJson.toString() + } } -- GitLab From ca52d079c26311a6cb426827453b33ab631d74bd Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Tue, 29 Nov 2022 01:24:17 +0530 Subject: [PATCH 5/6] ktlint fixes --- app/src/main/java/foundation/e/apps/MainActivity.kt | 3 +-- .../java/foundation/e/apps/MainActivityViewModel.kt | 4 ++-- .../java/foundation/e/apps/login/LoginSourceGPlay.kt | 12 ++++++------ .../e/apps/utils/modules/CommonUtilsFunctions.kt | 3 +-- 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/MainActivity.kt b/app/src/main/java/foundation/e/apps/MainActivity.kt index 9bbda7614..00b90776f 100644 --- a/app/src/main/java/foundation/e/apps/MainActivity.kt +++ b/app/src/main/java/foundation/e/apps/MainActivity.kt @@ -59,7 +59,6 @@ import foundation.e.apps.utils.modules.CommonUtilsModule import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.filter import kotlinx.coroutines.launch -import org.json.JSONObject import timber.log.Timber import java.io.File import java.util.UUID @@ -74,7 +73,7 @@ class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - + binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) diff --git a/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt b/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt index 90b8fea34..03ae34b07 100644 --- a/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt +++ b/app/src/main/java/foundation/e/apps/MainActivityViewModel.kt @@ -54,10 +54,10 @@ import foundation.e.apps.utils.modules.PWAManagerModule import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import ru.beryukhov.reactivenetwork.ReactiveNetwork -import java.io.ByteArrayOutputStream -import javax.inject.Inject import ru.beryukhov.reactivenetwork.internet.observing.InternetObservingSettings import ru.beryukhov.reactivenetwork.internet.observing.strategy.SocketInternetObservingStrategy +import java.io.ByteArrayOutputStream +import javax.inject.Inject @HiltViewModel class MainActivityViewModel @Inject constructor( diff --git a/app/src/main/java/foundation/e/apps/login/LoginSourceGPlay.kt b/app/src/main/java/foundation/e/apps/login/LoginSourceGPlay.kt index dbac889c9..03e159d25 100644 --- a/app/src/main/java/foundation/e/apps/login/LoginSourceGPlay.kt +++ b/app/src/main/java/foundation/e/apps/login/LoginSourceGPlay.kt @@ -228,12 +228,12 @@ class LoginSourceGPlay @Inject constructor( } else { val message = "Validating AuthData failed.\n" + - "Network code: ${playResponse?.code}\n" + - "Success: ${playResponse?.isSuccessful}" + - playResponse?.errorString?.run { - if (isNotBlank()) "\nError message: $this" - else "" - } + "Network code: ${playResponse?.code}\n" + + "Success: ${playResponse?.isSuccessful}" + + playResponse?.errorString?.run { + if (isNotBlank()) "\nError message: $this" + else "" + } ResultSupreme.Error( message, diff --git a/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsFunctions.kt b/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsFunctions.kt index d6b603f05..6dcf53f9b 100644 --- a/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsFunctions.kt +++ b/app/src/main/java/foundation/e/apps/utils/modules/CommonUtilsFunctions.kt @@ -22,7 +22,6 @@ import android.content.ClipData import android.content.ClipboardManager import android.os.Build import foundation.e.apps.BuildConfig -import java.lang.Exception import org.json.JSONObject object CommonUtilsFunctions { @@ -47,7 +46,7 @@ object CommonUtilsFunctions { try { value = Class.forName("android.os.SystemProperties") .getMethod("get", String::class.java).invoke(null, key) as String - } catch (e: java.lang.Exception) { + } catch (e: Exception) { e.printStackTrace() } return value -- GitLab From 298e63ee06a2d15121262482b358c903c9574866 Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Tue, 29 Nov 2022 15:35:01 +0530 Subject: [PATCH 6/6] apply suggestions --- app/build.gradle | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 718b7bd33..86565a3b7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,17 +12,15 @@ def versionMajor = 2 def versionMinor = 4 def versionPatch = 0 -// https://stackoverflow.com/a/35041457 def getGitHash = { -> def stdOut = new ByteArrayOutputStream() exec { - commandLine 'git', 'rev-parse', '--short', 'HEAD' + commandLine 'git', 'log', '--pretty=format:%h', '-n', '1' standardOutput = stdOut } return stdOut.toString().trim() } -// https://stackoverflow.com/a/19184323 def getDate = { -> return new Date().format('yyyyMMddHHmmss') } -- GitLab