From 2b2e4cbf02f408b3686a2340c9ae2ef7401d9861 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Fri, 26 Apr 2024 16:58:42 +0530 Subject: [PATCH] Add support for content rating Ref: https://support.google.com/googleplay?p=appgame_ratings Signed-off-by: Aayush Gupta (cherry picked from commit 1f0e94fc24109fe1976a8eb6deeaa2859b35f8d9) --- .../gplayapi/data/builders/AppBuilder.kt | 17 ++++++++++++++++ .../com/aurora/gplayapi/data/models/App.kt | 3 ++- .../gplayapi/data/models/ContentRating.kt | 13 ++++++++++++ lib/src/main/proto/GooglePlay.proto | 20 +++++++++++++++++++ 4 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 lib/src/main/java/com/aurora/gplayapi/data/models/ContentRating.kt diff --git a/lib/src/main/java/com/aurora/gplayapi/data/builders/AppBuilder.kt b/lib/src/main/java/com/aurora/gplayapi/data/builders/AppBuilder.kt index e2b4534..281824f 100644 --- a/lib/src/main/java/com/aurora/gplayapi/data/builders/AppBuilder.kt +++ b/lib/src/main/java/com/aurora/gplayapi/data/builders/AppBuilder.kt @@ -21,6 +21,8 @@ import com.aurora.gplayapi.DetailsResponse import com.aurora.gplayapi.Item import com.aurora.gplayapi.data.models.ActiveDevice import com.aurora.gplayapi.data.models.App +import com.aurora.gplayapi.data.models.Artwork +import com.aurora.gplayapi.data.models.ContentRating import com.aurora.gplayapi.data.models.EncodedCertificateSet import com.aurora.gplayapi.data.models.File import com.aurora.gplayapi.data.models.details.Badge @@ -112,6 +114,7 @@ object AppBuilder { parseInfoBadges(app, item) parseStreamUrls(app, item) parseRating(app, item) + parseContentRating(app, item) parseArtwork(app, item) parseDependencies(app, appDetails) @@ -193,6 +196,20 @@ object AppBuilder { app.rating = RatingBuilder.build(item.aggregateRating) } + private fun parseContentRating(app: App, item: Item) { + app.contentRating = ContentRating( + title = item.contentRating.title, + description = item.contentRating.description, + recommendation = item.contentRating.recommendation, + artwork = Artwork( + width = item.contentRating.contentRatingImage.dimension.width, + height = item.contentRating.contentRatingImage.dimension.height, + url = item.contentRating.contentRatingImage.image.url + ), + recommendationAndDescriptionHtml = item.contentRating.recommendationAndDescriptionHtml, + ) + } + private fun parseDependencies(app: App, appDetails: AppDetails) { if (appDetails.hasDependencies()) { appDetails.dependencies.let { diff --git a/lib/src/main/java/com/aurora/gplayapi/data/models/App.kt b/lib/src/main/java/com/aurora/gplayapi/data/models/App.kt index 4d9b367..3ad84bc 100644 --- a/lib/src/main/java/com/aurora/gplayapi/data/models/App.kt +++ b/lib/src/main/java/com/aurora/gplayapi/data/models/App.kt @@ -84,7 +84,8 @@ data class App( var videoArtwork: Artwork = Artwork(), var certificateHashList: MutableList = mutableListOf(), var certificateSetList: MutableList = mutableListOf(), - val compatibility: MutableList = mutableListOf() + val compatibility: MutableList = mutableListOf(), + var contentRating: ContentRating = ContentRating() ) : Parcelable { override fun hashCode(): Int { diff --git a/lib/src/main/java/com/aurora/gplayapi/data/models/ContentRating.kt b/lib/src/main/java/com/aurora/gplayapi/data/models/ContentRating.kt new file mode 100644 index 0000000..1cb61e5 --- /dev/null +++ b/lib/src/main/java/com/aurora/gplayapi/data/models/ContentRating.kt @@ -0,0 +1,13 @@ +package com.aurora.gplayapi.data.models + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +data class ContentRating( + val title: String = String(), + val description: String = String(), + val recommendation: String = String(), + val artwork: Artwork = Artwork(), + val recommendationAndDescriptionHtml: String = String() +) : Parcelable diff --git a/lib/src/main/proto/GooglePlay.proto b/lib/src/main/proto/GooglePlay.proto index 8845166..582aefb 100644 --- a/lib/src/main/proto/GooglePlay.proto +++ b/lib/src/main/proto/GooglePlay.proto @@ -1169,6 +1169,26 @@ message Item { optional bool useWishlistAsPrimaryAction = 33; optional string reviewQuestionsUrl = 34; optional string reviewSummaryUrl = 39; + optional ContentRating contentRating = 50; +} + +message ContentRating { + message ContentRatingImage { + message Dimension { + optional int32 width = 3; + optional int32 height = 4; + } + message Image { + optional string url = 1; + } + optional Dimension dimension = 3; + optional Image image = 6; + } + optional string title = 1; + optional string recommendationAndDescriptionHtml = 2; + optional ContentRatingImage contentRatingImage = 3; + optional string recommendation = 5; + optional string description = 6; } message AppInfo { -- GitLab