[gnome-software] Do not show reviews with insufficient data
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software] Do not show reviews with insufficient data
- Date: Wed, 10 Feb 2016 14:05:11 +0000 (UTC)
commit e2bc70a495d1590951d3a428ac0c20c855ac1a72
Author: Richard Hughes <richard hughsie com>
Date: Wed Feb 10 14:01:48 2016 +0000
Do not show reviews with insufficient data
The service may return reviews without all the data we require in GNOME.
src/plugins/gs-plugin-xdg-app-reviews.c | 67 +++++++++++++++++++++----------
1 files changed, 45 insertions(+), 22 deletions(-)
---
diff --git a/src/plugins/gs-plugin-xdg-app-reviews.c b/src/plugins/gs-plugin-xdg-app-reviews.c
index 8b15108..a974c13 100644
--- a/src/plugins/gs-plugin-xdg-app-reviews.c
+++ b/src/plugins/gs-plugin-xdg-app-reviews.c
@@ -113,34 +113,51 @@ static GsReview *
xdg_app_review_parse_review_object (JsonObject *item)
{
GsReview *rev = gs_review_new ();
- guint64 timestamp;
- g_autofree gchar *dbid = NULL;
- g_autoptr(GDateTime) dt = NULL;
/* date */
- timestamp = json_object_get_int_member (item, "date_created");
- dt = g_date_time_new_from_unix_utc (timestamp);
- gs_review_set_date (rev, dt);
+ if (json_object_has_member (item, "date_created")) {
+ guint64 timestamp;
+ g_autoptr(GDateTime) dt = NULL;
+ timestamp = json_object_get_int_member (item, "date_created");
+ dt = g_date_time_new_from_unix_utc (timestamp);
+ gs_review_set_date (rev, dt);
+ }
/* assemble review */
- gs_review_set_rating (rev, json_object_get_int_member (item, "rating"));
- gs_review_set_score (rev, json_object_get_int_member (item, "score"));
- gs_review_set_reviewer (rev, json_object_get_string_member (item, "user_display"));
- gs_review_set_summary (rev, json_object_get_string_member (item, "summary"));
- gs_review_set_text (rev, json_object_get_string_member (item, "description"));
- gs_review_set_version (rev, json_object_get_string_member (item, "version"));
- gs_review_set_karma (rev, json_object_get_int_member (item, "karma"));
+ if (json_object_has_member (item, "rating"))
+ gs_review_set_rating (rev, json_object_get_int_member (item, "rating"));
+ if (json_object_has_member (item, "score"))
+ gs_review_set_score (rev, json_object_get_int_member (item, "score"));
+ if (json_object_has_member (item, "user_display"))
+ gs_review_set_reviewer (rev, json_object_get_string_member (item, "user_display"));
+ if (json_object_has_member (item, "summary"))
+ gs_review_set_summary (rev, json_object_get_string_member (item, "summary"));
+ if (json_object_has_member (item, "description"))
+ gs_review_set_text (rev, json_object_get_string_member (item, "description"));
+ if (json_object_has_member (item, "version"))
+ gs_review_set_version (rev, json_object_get_string_member (item, "version"));
+ if (json_object_has_member (item, "karma"))
+ gs_review_set_karma (rev, json_object_get_int_member (item, "karma"));
/* add extra metadata for the plugin */
- gs_review_add_metadata (rev, "user_hash",
- json_object_get_string_member (item, "user_id"));
- gs_review_add_metadata (rev, "user_key",
- json_object_get_string_member (item, "user_key"));
- gs_review_add_metadata (rev, "appid",
- json_object_get_string_member (item, "appid"));
- dbid = g_strdup_printf ("%" G_GINT64_FORMAT,
- json_object_get_int_member (item, "dbid"));
- gs_review_add_metadata (rev, "dbid", dbid);
+ if (json_object_has_member (item, "user_id")) {
+ gs_review_add_metadata (rev, "user_hash",
+ json_object_get_string_member (item, "user_id"));
+ }
+ if (json_object_has_member (item, "user_key")) {
+ gs_review_add_metadata (rev, "user_key",
+ json_object_get_string_member (item, "user_key"));
+ }
+ if (json_object_has_member (item, "appid")) {
+ gs_review_add_metadata (rev, "appid",
+ json_object_get_string_member (item, "appid"));
+ }
+ if (json_object_has_member (item, "dbid")) {
+ g_autofree gchar *dbid = NULL;
+ dbid = g_strdup_printf ("%" G_GINT64_FORMAT,
+ json_object_get_int_member (item, "dbid"));
+ gs_review_add_metadata (rev, "dbid", dbid);
+ }
return rev;
}
@@ -651,6 +668,12 @@ gs_plugin_refine_reviews (GsPlugin *plugin,
for (i = 0; i < reviews->len; i++) {
review = g_ptr_array_index (reviews, i);
+ /* ignore invalid reviews */
+ if (gs_review_get_rating (review) == 0)
+ continue;
+ if (gs_review_get_reviewer (review) == NULL)
+ continue;
+
/* save this on the application object so we can use it for
* submitting a new review */
if (i == 0) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]