From dcca8b7433b09753ebb9522d7f6c608a376c74dd Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Mon, 25 Jul 2022 09:10:30 +0200 Subject: [PATCH] Implement getOnDemandModule() Implement getOnDemandModule() method to list the split apks available for a specific package name. --- .../aurora/gplayapi/helpers/PurchaseHelper.kt | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/src/main/java/com/aurora/gplayapi/helpers/PurchaseHelper.kt b/src/main/java/com/aurora/gplayapi/helpers/PurchaseHelper.kt index b71157f..ed47ea4 100644 --- a/src/main/java/com/aurora/gplayapi/helpers/PurchaseHelper.kt +++ b/src/main/java/com/aurora/gplayapi/helpers/PurchaseHelper.kt @@ -118,6 +118,57 @@ class PurchaseHelper(authData: AuthData) : BaseHelper(authData) { return payload.deliveryResponse } + @Throws(Exception::class) + fun getOnDemandModule( + packageName: String, + splitModule: String, + versionCode: Int, + offerType: Int + ) : List { + val buyResponse = getBuyResponse(packageName, versionCode, offerType) + val deliveryResponse = getOnDemandDeliveryResponse( + packageName, + splitModule, + buyResponse.encodedDeliveryToken, + versionCode, + offerType + ) + + when (deliveryResponse.status) { + 1 -> return getDownloadsFromDeliveryResponse(packageName, versionCode, deliveryResponse) + else -> throw ApiException.Unknown() + } + } + + private fun getOnDemandDeliveryResponse( + packageName:String, + splitModule: String, + downloadToken: String, + versionCode: Int, + offerType: Int + ) : DeliveryResponse { + + val params: MutableMap = HashMap() + params["ot"] = offerType.toString() + params["doc"] = packageName + params["vc"] = versionCode.toString() + params["mn"] = splitModule + + if (downloadToken.isNotEmpty()) { + params["dtok"] = downloadToken + } + + val playResponse = httpClient.get( + GooglePlayApi.DELIVERY_URL, + HeaderProvider.getDefaultHeaders(authData), + params + ) + + val payload = ResponseWrapper.parseFrom(playResponse.responseBytes).payload + + return payload.deliveryResponse + } + @Throws(Exception::class) fun purchase(packageName: String, versionCode: Int, offerType: Int): List { val buyResponse = getBuyResponse(packageName, versionCode, offerType) -- GitLab