1+ package net.xzos.upgradeall.core.websdk.api.client_proxy.hubs
2+
3+ import com.aurora.gplayapi.DeviceManager
4+ import com.aurora.gplayapi.data.models.AuthData
5+ import com.aurora.gplayapi.data.providers.DeviceInfoProvider
6+ import com.aurora.gplayapi.helpers.AppDetailsHelper
7+ import com.aurora.gplayapi.helpers.AuthHelper
8+ import com.aurora.gplayapi.helpers.PurchaseHelper
9+ import net.xzos.upgradeall.core.utils.constant.ANDROID_APP_TYPE
10+ import net.xzos.upgradeall.core.utils.constant.VERSION_CODE
11+ import net.xzos.upgradeall.core.utils.data_cache.DataCacheManager
12+ import net.xzos.upgradeall.core.utils.data_cache.utils.JsonObjectEncoder
13+ import net.xzos.upgradeall.core.utils.getLocale
14+ import net.xzos.upgradeall.core.websdk.api.client_proxy.APK_CONTENT_TYPE
15+ import net.xzos.upgradeall.core.websdk.api.web.http.HttpRequestData
16+ import net.xzos.upgradeall.core.websdk.api.web.proxy.OkhttpProxy
17+ import net.xzos.upgradeall.core.websdk.base_model.ApiRequestData
18+ import net.xzos.upgradeall.core.websdk.json.AssetGson
19+ import net.xzos.upgradeall.core.websdk.json.DownloadItem
20+ import net.xzos.upgradeall.core.websdk.json.ReleaseGson
21+ import org.json.JSONObject
22+
23+ class GooglePlay (
24+ dataCache : DataCacheManager , okhttpProxy : OkhttpProxy
25+ ) : BaseHub(dataCache, okhttpProxy) {
26+ override val uuid: String = " 65c2f60c-7d08-48b8-b4ba-ac6ee924f6fa"
27+
28+ private fun getAuthJson (url : String = "https : // auroraoss.com/api/auth"): JSONObject? {
29+ return dataCache.get("AuroraOSS_auth ", JsonObjectEncoder ) {
30+ okhttpProxy.okhttpExecute(HttpRequestData (url))?.body?.string()
31+ ?.let { JSONObject (it) }
32+ }
33+ }
34+
35+ private fun getAuthData(authJson: JSONObject , deviceName: String = "px_3a"): AuthData ? {
36+ val email = authJson.getString("email")
37+ val auth = authJson.getString("auth")
38+ val properties = DeviceManager .loadProperties("$deviceName.properties") ? : return null
39+ val locale = getLocale()
40+ val deviceInfoProvider = DeviceInfoProvider (properties, locale.toString())
41+ return AuthHelper .buildInsecure(email, auth, locale, deviceInfoProvider)
42+ }
43+
44+ override fun getRelease(data: ApiRequestData ): List <ReleaseGson >? {
45+ val appPackage = data.appId[ANDROID_APP_TYPE ] ? : return emptyList()
46+ val authJson = getAuthJson() ? : return null
47+ val authData = getAuthData(authJson) ? : return null
48+ val detailHelper = AppDetailsHelper (authData)
49+ val app = detailHelper.getAppByPackageName(appPackage)
50+ return listOf(
51+ ReleaseGson (
52+ versionNumber = app.versionName,
53+ extra = mapOf(VERSION_CODE to app.versionCode),
54+ changelog = app.changes,
55+ assetGsonList = app.fileList.map {
56+ AssetGson (
57+ fileName = it.name,
58+ fileType = APK_CONTENT_TYPE ,
59+ downloadUrl = it.url,
60+ )
61+ }
62+ )
63+ )
64+ }
65+
66+ override fun getDownload(
67+ data: ApiRequestData ,
68+ assetIndex: List <Int >,
69+ assetGson: AssetGson ?
70+ ): List <DownloadItem >? {
71+ val appPackage = data.appId[ANDROID_APP_TYPE ] ? : return emptyList()
72+ val authJson = getAuthJson() ? : return null
73+ val authData = getAuthData(authJson) ? : return null
74+ val detailHelper = AppDetailsHelper (authData)
75+ val app = detailHelper.getAppByPackageName(appPackage)
76+ return PurchaseHelper (authData).purchase(
77+ app.packageName,
78+ app.versionCode,
79+ app.offerType
80+ ).map {
81+ DownloadItem (it.name, it.url, null, null)
82+ }
83+ }
84+ }
0 commit comments