[gnome-software/wip/ubuntu-xenial] Refactor some ubuntu review functions



commit 9c7e650967f924de2c207f513643de5374e3e24c
Author: Robert Ancell <robert ancell canonical com>
Date:   Fri Jul 1 15:00:20 2016 +1200

    Refactor some ubuntu review functions

 src/plugins/gs-plugin-ubuntu-reviews.c |  115 ++++++++++++-------------------
 1 files changed, 45 insertions(+), 70 deletions(-)
---
diff --git a/src/plugins/gs-plugin-ubuntu-reviews.c b/src/plugins/gs-plugin-ubuntu-reviews.c
index a493287..23e5382 100644
--- a/src/plugins/gs-plugin-ubuntu-reviews.c
+++ b/src/plugins/gs-plugin-ubuntu-reviews.c
@@ -857,18 +857,29 @@ add_int_member (JsonBuilder *builder, const gchar *name, gint64 value)
        json_builder_add_int_value (builder, value);
 }
 
-static gboolean
-set_package_review (GsPlugin *plugin,
-                   GsReview *review,
-                   const gchar *package_name,
-                   GCancellable *cancellable,
-                   GError **error)
+gboolean
+gs_plugin_review_submit (GsPlugin *plugin,
+                        GsApp *app,
+                        GsReview *review,
+                        GCancellable *cancellable,
+                        GError **error)
 {
        gint rating;
        gint n_stars;
        g_autofree gchar *os_id = NULL, *os_ubuntu_codename = NULL, *language = NULL, *architecture = NULL;
        g_autoptr(JsonBuilder) request = NULL;
 
+       /* Load database once */
+       if (g_once_init_enter (&plugin->priv->db_loaded)) {
+               gboolean ret = load_database (plugin, cancellable, error);
+               g_once_init_leave (&plugin->priv->db_loaded, TRUE);
+               if (!ret)
+                       return FALSE;
+       }
+
+       if (!get_ubuntuone_credentials (plugin, TRUE, error))
+               return FALSE;
+
        /* Ubuntu reviews require a summary and description - just make one up for now */
        rating = gs_review_get_rating (review);
        if (rating > 80)
@@ -897,7 +908,7 @@ set_package_review (GsPlugin *plugin,
        /* Create message for reviews.ubuntu.com */
        request = json_builder_new ();
        json_builder_begin_object (request);
-       add_string_member (request, "package_name", package_name);
+       add_string_member (request, "package_name", gs_app_get_source_default (app));
        add_string_member (request, "summary", gs_review_get_summary (review));
        add_string_member (request, "review_text", gs_review_get_text (review));
        add_string_member (request, "language", language);
@@ -913,32 +924,42 @@ set_package_review (GsPlugin *plugin,
                                    NULL, cancellable, error);
 }
 
-static gboolean
-set_review_usefulness (GsPlugin *plugin,
-                      const gchar *review_id,
-                      gboolean is_useful,
-                      GCancellable *cancellable,
-                      GError **error)
+gboolean
+gs_plugin_review_report (GsPlugin *plugin,
+                        GsApp *app,
+                        GsReview *review,
+                        GCancellable *cancellable,
+                        GError **error)
 {
+       const gchar *review_id;
        g_autofree gchar *path = NULL;
 
+       /* Can only modify Ubuntu reviews */
+       review_id = gs_review_get_metadata_item (review, "ubuntu-id");
+       if (review_id == NULL)
+               return TRUE;
+
        if (!get_ubuntuone_credentials (plugin, TRUE, error))
                return FALSE;
 
        /* Create message for reviews.ubuntu.com */
-       path = g_strdup_printf ("/api/1.0/reviews/%s/recommendations/?useful=%s", review_id, is_useful ? 
"True" : "False");
-       return send_review_request (plugin, SOUP_METHOD_POST, path,
-                                   NULL, TRUE,
-                                   NULL, cancellable, error);
+       // FIXME: escape reason / text properly
+       path = g_strdup_printf ("/api/1.0/reviews/%s/recommendations/?reason=%s&text=%s", review_id, "FIXME: 
gnome-software", "FIXME: gnome-software");
+       if (!send_review_request (plugin, SOUP_METHOD_POST, path,
+                                 NULL, TRUE,
+                                 NULL, cancellable, error))
+               return FALSE;
+
+       gs_review_add_flags (review, GS_REVIEW_FLAG_VOTED);
+       return TRUE;
 }
 
 static gboolean
-report_review (GsPlugin *plugin,
-              const gchar *review_id,
-              const gchar *reason,
-              const gchar *text,
-              GCancellable *cancellable,
-              GError **error)
+set_review_usefulness (GsPlugin *plugin,
+                      const gchar *review_id,
+                      gboolean is_useful,
+                      GCancellable *cancellable,
+                      GError **error)
 {
        g_autofree gchar *path = NULL;
 
@@ -946,59 +967,13 @@ report_review (GsPlugin *plugin,
                return FALSE;
 
        /* Create message for reviews.ubuntu.com */
-       // FIXME: escape reason / text properly
-       path = g_strdup_printf ("/api/1.0/reviews/%s/recommendations/?reason=%s&text=%s", review_id, reason, 
text);
+       path = g_strdup_printf ("/api/1.0/reviews/%s/recommendations/?useful=%s", review_id, is_useful ? 
"True" : "False");
        return send_review_request (plugin, SOUP_METHOD_POST, path,
                                    NULL, TRUE,
                                    NULL, cancellable, error);
 }
 
 gboolean
-gs_plugin_review_submit (GsPlugin *plugin,
-                        GsApp *app,
-                        GsReview *review,
-                        GCancellable *cancellable,
-                        GError **error)
-{
-       /* Load database once */
-       if (g_once_init_enter (&plugin->priv->db_loaded)) {
-               gboolean ret = load_database (plugin, cancellable, error);
-               g_once_init_leave (&plugin->priv->db_loaded, TRUE);
-               if (!ret)
-                       return FALSE;
-       }
-
-       if (!get_ubuntuone_credentials (plugin, TRUE, error))
-               return FALSE;
-
-       return set_package_review (plugin,
-                                  review,
-                                  gs_app_get_source_default (app),
-                                  cancellable,
-                                  error);
-}
-
-gboolean
-gs_plugin_review_report (GsPlugin *plugin,
-                        GsApp *app,
-                        GsReview *review,
-                        GCancellable *cancellable,
-                        GError **error)
-{
-       const gchar *review_id;
-
-       /* Can only modify Ubuntu reviews */
-       review_id = gs_review_get_metadata_item (review, "ubuntu-id");
-       if (review_id == NULL)
-               return TRUE;
-
-       if (!report_review (plugin, review_id, "FIXME: gnome-software", "FIXME: gnome-software", cancellable, 
error))
-               return FALSE;
-       gs_review_add_flags (review, GS_REVIEW_FLAG_VOTED);
-       return TRUE;
-}
-
-gboolean
 gs_plugin_review_upvote (GsPlugin *plugin,
                         GsApp *app,
                         GsReview *review,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]