diff --git a/src/main/java/com/aurora/gplayapi/helpers/PurchaseHelper.kt b/src/main/java/com/aurora/gplayapi/helpers/PurchaseHelper.kt index b71157ff5eae317c1e6e49500308e3b3b77514c6..ed47ea4809e0a4b1824bedd24af2fe541b7a11da 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)