[gnome-software/wip/temp/ubuntu-xenial-rebased: 180/326] Match our own reviews
- From: Iain Lane <iainl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/wip/temp/ubuntu-xenial-rebased: 180/326] Match our own reviews
- Date: Fri, 29 Apr 2016 10:02:28 +0000 (UTC)
commit da0f730fbd0d91807190cf1eae175864487fa90b
Author: Robert Ancell <robert ancell canonical com>
Date: Fri Apr 1 15:17:23 2016 +1300
Match our own reviews
src/plugins/gs-plugin-ubuntu-reviews.c | 41 ++++++++++++++++++++++++++++++-
src/plugins/gs-ubuntuone.c | 25 ++++++++++++++-----
2 files changed, 57 insertions(+), 9 deletions(-)
---
diff --git a/src/plugins/gs-plugin-ubuntu-reviews.c b/src/plugins/gs-plugin-ubuntu-reviews.c
index 3b787f9..d53b7e5 100644
--- a/src/plugins/gs-plugin-ubuntu-reviews.c
+++ b/src/plugins/gs-plugin-ubuntu-reviews.c
@@ -921,8 +921,9 @@ parse_date_time (const gchar *text)
}
static GsReview *
-parse_review (JsonNode *node)
+parse_review (GsPlugin *plugin, JsonNode *node)
{
+ GsPluginPrivate *priv = plugin->priv;
GsReview *review;
JsonObject *object;
gint64 star_rating;
@@ -934,6 +935,8 @@ parse_review (JsonNode *node)
object = json_node_get_object (node);
review = gs_review_new ();
+ if (g_strcmp0 (priv->consumer_key, json_object_get_string_member (object, "reviewer_username")) == 0)
+ gs_review_add_flags (review, GS_REVIEW_FLAG_SELF);
gs_review_set_reviewer (review, json_object_get_string_member (object, "reviewer_displayname"));
gs_review_set_summary (review, json_object_get_string_member (object, "summary"));
gs_review_set_text (review, json_object_get_string_member (object, "review_text"));
@@ -961,7 +964,7 @@ parse_reviews (GsPlugin *plugin, JsonParser *parser, GsApp *app, GError **error)
g_autoptr(GsReview) review = NULL;
/* Read in from JSON... (skip bad entries) */
- review = parse_review (json_array_get_element (array, i));
+ review = parse_review (plugin, json_array_get_element (array, i));
if (review != NULL)
gs_app_add_review (app, review);
}
@@ -1051,11 +1054,45 @@ refine_rating (GsPlugin *plugin, GsApp *app, GError **error)
}
static gboolean
+get_ubuntuone_credentials (GsPlugin *plugin,
+ gboolean required,
+ GError **error)
+{
+ GsPluginPrivate *priv = plugin->priv;
+
+ /* Use current credentials if already available */
+ if (priv->consumer_key != NULL &&
+ priv->consumer_secret != NULL &&
+ priv->token_key != NULL &&
+ priv->token_secret != NULL)
+ return TRUE;
+
+ /* Otherwise start with a clean slate */
+ g_clear_pointer (&priv->token_secret, g_free);
+ g_clear_pointer (&priv->token_key, g_free);
+ g_clear_pointer (&priv->consumer_secret, g_free);
+ g_clear_pointer (&priv->consumer_key, g_free);
+
+ /* Use credentials if we have them */
+ if (gs_ubuntuone_get_credentials (&priv->consumer_key, &priv->consumer_secret, &priv->token_key,
&priv->token_secret))
+ return TRUE;
+
+ /* Otherwise log in to get them */
+ if (required)
+ return gs_ubuntuone_sign_in (&priv->consumer_key, &priv->consumer_secret, &priv->token_key,
&priv->token_secret, error);
+ else
+ return TRUE;
+}
+
+static gboolean
refine_reviews (GsPlugin *plugin, GsApp *app, GError **error)
{
GPtrArray *sources;
guint i;
+ if (!get_ubuntuone_credentials (plugin, FALSE, error))
+ return FALSE;
+
/* Skip if already has reviews */
if (gs_app_get_reviews (app)->len > 0)
return TRUE;
diff --git a/src/plugins/gs-ubuntuone.c b/src/plugins/gs-ubuntuone.c
index 328b61b..925bc93 100644
--- a/src/plugins/gs-ubuntuone.c
+++ b/src/plugins/gs-ubuntuone.c
@@ -184,7 +184,7 @@ show_login_dialog (gpointer user_data)
}
gboolean
-gs_ubuntuone_sign_in (gchar **consumer_key, gchar **consumer_secret, gchar **token_key, gchar
**token_secret, GError **error)
+gs_ubuntuone_get_credentials (gchar **consumer_key, gchar **consumer_secret, gchar **token_key, gchar
**token_secret)
{
static SecretSchema schema = {
SCHEMA_NAME,
@@ -193,7 +193,6 @@ gs_ubuntuone_sign_in (gchar **consumer_key, gchar **consumer_secret, gchar **tok
};
SecretContext secret_context = { 0 };
- LoginContext login_context = { 0 };
/* Use credentials from libsecret if available */
secret_context.waiting = 4;
@@ -247,11 +246,23 @@ gs_ubuntuone_sign_in (gchar **consumer_key, gchar **consumer_secret, gchar **tok
return TRUE;
}
- /* Otherwise start with a clean slate */
- g_clear_pointer (&secret_context.token_secret, g_free);
- g_clear_pointer (&secret_context.token_key, g_free);
- g_clear_pointer (&secret_context.consumer_secret, g_free);
- g_clear_pointer (&secret_context.consumer_key, g_free);
+ g_free (&secret_context.token_secret);
+ g_free (&secret_context.token_key);
+ g_free (&secret_context.consumer_secret);
+ g_free (&secret_context.consumer_key);
+ return FALSE;
+}
+
+gboolean
+gs_ubuntuone_sign_in (gchar **consumer_key, gchar **consumer_secret, gchar **token_key, gchar
**token_secret, GError **error)
+{
+ static SecretSchema schema = {
+ SCHEMA_NAME,
+ SECRET_SCHEMA_NONE,
+ { { "key", SECRET_SCHEMA_ATTRIBUTE_STRING } }
+ };
+
+ LoginContext login_context = { 0 };
/* Pop up a login dialog */
login_context.error = error;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]