[gnome-software/wip/rancell/reviews] Match our own reviews
- From: Robert Ancell <rancell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/wip/rancell/reviews] Match our own reviews
- Date: Fri, 1 Apr 2016 02:18:05 +0000 (UTC)
commit 7a23053dd972b88c8ca76eeb3e752f4edb9d2760
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 | 71 +++++++++++++++++++------------
src/plugins/gs-ubuntuone.c | 25 ++++++++---
2 files changed, 61 insertions(+), 35 deletions(-)
---
diff --git a/src/plugins/gs-plugin-ubuntu-reviews.c b/src/plugins/gs-plugin-ubuntu-reviews.c
index b55097a..c076e6d 100644
--- a/src/plugins/gs-plugin-ubuntu-reviews.c
+++ b/src/plugins/gs-plugin-ubuntu-reviews.c
@@ -543,8 +543,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;
@@ -556,6 +557,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"));
@@ -583,7 +586,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);
}
@@ -673,11 +676,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;
@@ -790,28 +827,6 @@ set_package_review (GsPlugin *plugin,
}
static gboolean
-sign_into_ubuntu (GsPlugin *plugin,
- 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);
-
- return gs_ubuntuone_sign_in (&priv->consumer_key, &priv->consumer_secret, &priv->token_key,
&priv->token_secret, error);
-}
-
-static gboolean
set_review_usefulness (GsPlugin *plugin,
const gchar *review_id,
gboolean is_useful,
@@ -819,7 +834,7 @@ set_review_usefulness (GsPlugin *plugin,
{
g_autofree gchar *path = NULL;
- if (!sign_into_ubuntu (plugin, error))
+ if (!get_ubuntuone_credentials (plugin, TRUE, error))
return FALSE;
/* Create message for reviews.ubuntu.com */
@@ -836,7 +851,7 @@ report_review (GsPlugin *plugin,
{
g_autofree gchar *path = NULL;
- if (!sign_into_ubuntu (plugin, error))
+ if (!get_ubuntuone_credentials (plugin, TRUE, error))
return FALSE;
/* Create message for reviews.ubuntu.com */
@@ -852,7 +867,7 @@ remove_review (GsPlugin *plugin,
{
g_autofree gchar *path = NULL;
- if (!sign_into_ubuntu (plugin, error))
+ if (!get_ubuntuone_credentials (plugin, TRUE, error))
return FALSE;
/* Create message for reviews.ubuntu.com */
@@ -875,7 +890,7 @@ gs_plugin_review_submit (GsPlugin *plugin,
return FALSE;
}
- if (!sign_into_ubuntu (plugin, error))
+ if (!get_ubuntuone_credentials (plugin, TRUE, error))
return FALSE;
return set_package_review (plugin,
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]