[gnome-software/wip/rancell/reviews] Simplify set_package_review ()
- From: William Hua <williamhua src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/wip/rancell/reviews] Simplify set_package_review ()
- Date: Thu, 11 Feb 2016 22:16:25 +0000 (UTC)
commit ecf394ac4c231af882d26b035755fc4e7dadde6c
Author: William Hua <william hua canonical com>
Date: Thu Feb 11 16:31:46 2016 -0500
Simplify set_package_review ()
src/plugins/gs-plugin-ubuntu-reviews.c | 95 ++++++++++++-------------------
1 files changed, 37 insertions(+), 58 deletions(-)
---
diff --git a/src/plugins/gs-plugin-ubuntu-reviews.c b/src/plugins/gs-plugin-ubuntu-reviews.c
index 6752b35..3969d24 100644
--- a/src/plugins/gs-plugin-ubuntu-reviews.c
+++ b/src/plugins/gs-plugin-ubuntu-reviews.c
@@ -867,34 +867,6 @@ gs_plugin_refine (GsPlugin *plugin,
return ret;
}
-static void
-add_string_member (JsonBuilder *builder, const gchar *name, const gchar *value)
-{
- json_builder_set_member_name (builder, name);
- json_builder_add_string_value (builder, value);
-}
-
-static void
-add_int_member (JsonBuilder *builder, const gchar *name, gint64 value)
-{
- json_builder_set_member_name (builder, name);
- json_builder_add_int_value (builder, value);
-}
-
-static void
-set_request (SoupMessage *message, JsonBuilder *builder)
-{
- JsonGenerator *generator;
- gchar *data;
- gsize length;
-
- generator = json_generator_new ();
- json_generator_set_root (generator, json_builder_get_root (builder));
- data = json_generator_to_data (generator, &length);
- soup_message_set_request (message, "application/json", SOUP_MEMORY_TAKE, data, length);
- g_object_unref (generator);
-}
-
static gboolean
set_package_review (GsPlugin *plugin,
GsReview *review,
@@ -904,10 +876,8 @@ set_package_review (GsPlugin *plugin,
GsPluginPrivate *priv = plugin->priv;
gint rating;
gint n_stars;
- g_autofree gchar *uri = NULL, *os_id = NULL, *os_ubuntu_codename = NULL, *language = NULL,
*architecture = NULL;
+ g_autofree gchar *os_id = NULL, *os_ubuntu_codename = NULL, *language = NULL, *architecture = NULL;
gchar *c;
- g_autoptr(SoupMessage) msg;
- JsonBuilder *builder;
guint status_code;
/* Ubuntu reviews require a summary and description - just make one up for now */
@@ -939,33 +909,42 @@ set_package_review (GsPlugin *plugin,
// FIXME: Need to get Apt::Architecture configuration value from APT
architecture = g_strdup ("amd64");
- /* Create message for reviews.ubuntu.com */
- uri = g_strdup_printf ("%s/api/1.0/reviews/", UBUNTU_REVIEWS_SERVER);
- msg = soup_message_new (SOUP_METHOD_POST, uri);
- builder = json_builder_new ();
- json_builder_begin_object (builder);
- add_string_member (builder, "package_name", package_name);
- add_string_member (builder, "summary", gs_review_get_summary (review));
- add_string_member (builder, "review_text", gs_review_get_text (review));
- add_string_member (builder, "language", language);
- add_string_member (builder, "origin", os_id);
- add_string_member (builder, "distroseries", os_ubuntu_codename);
- add_string_member (builder, "version", gs_review_get_version (review));
- add_int_member (builder, "rating", n_stars);
- add_string_member (builder, "arch_tag", architecture);
- json_builder_end_object (builder);
- set_request (msg, builder);
- g_object_unref (builder);
- sign_message (msg,
- OA_PLAINTEXT,
- priv->consumer_key,
- priv->consumer_secret,
- priv->token_key,
- priv->token_secret);
+ /* Send message to reviews server */
+ status_code = send_signed_request (priv->session,
+ UBUNTU_REVIEWS_SERVER,
+ SOUP_METHOD_POST,
+ "/api/1.0/reviews/",
+ g_variant_new_parsed ("{"
+ " 'package_name' : <%s>,"
+ " 'summary' : <%s>,"
+ " 'review_text' : <%s>,"
+ " 'language' : <%s>,"
+ " 'origin' : <%s>,"
+ " 'distroseries' : <%s>,"
+ " 'version' : <%s>,"
+ " 'rating' : <%i>,"
+ " 'arch_tag' : <%s>"
+ "}",
+ package_name,
+ gs_review_get_summary (review),
+ gs_review_get_text (review),
+ language,
+ os_id,
+ os_ubuntu_codename,
+ gs_review_get_version (review),
+ n_stars,
+ architecture),
+ NULL,
+ OA_PLAINTEXT,
+ priv->consumer_key,
+ priv->consumer_secret,
+ priv->token_key,
+ priv->token_secret,
+ error);
- /* Send to the server */
- status_code = soup_session_send_message (priv->session, msg);
- if (status_code != SOUP_STATUS_OK) {
+ if (error != NULL && *error != NULL) {
+ return FALSE;
+ } else if (status_code != SOUP_STATUS_OK) {
g_set_error (error,
GS_PLUGIN_ERROR,
GS_PLUGIN_ERROR_FAILED,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]