[gnome-software/wip/rancell/ubuntu-ratings-3-18] Drop set_rating support - will be done properly in the review branch
- From: Robert Ancell <rancell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/wip/rancell/ubuntu-ratings-3-18] Drop set_rating support - will be done properly in the review branch
- Date: Wed, 13 Jan 2016 06:49:42 +0000 (UTC)
commit c46fe3ea66fd6e8057f2b4c05b196e33365925d7
Author: Robert Ancell <robert ancell canonical com>
Date: Wed Jan 13 19:48:43 2016 +1300
Drop set_rating support - will be done properly in the review branch
src/plugins/gs-plugin-ubuntu-ratings.c | 167 +-------------------------------
1 files changed, 3 insertions(+), 164 deletions(-)
---
diff --git a/src/plugins/gs-plugin-ubuntu-ratings.c b/src/plugins/gs-plugin-ubuntu-ratings.c
index 773588f..af9337b 100644
--- a/src/plugins/gs-plugin-ubuntu-ratings.c
+++ b/src/plugins/gs-plugin-ubuntu-ratings.c
@@ -25,7 +25,6 @@
#include <libsoup/soup.h>
#include <sqlite3.h>
#include <json-glib/json-glib.h>
-#include <oauth.h>
#include <gs-plugin.h>
#include <gs-utils.h>
@@ -99,7 +98,7 @@ setup_networking (GsPlugin *plugin, GError **error)
if (plugin->priv->session != NULL)
return TRUE;
- /* set up a session */
+ /* Set up a session */
plugin->priv->session = soup_session_new_with_options (SOUP_SESSION_USER_AGENT,
"gnome-software",
NULL);
@@ -114,174 +113,14 @@ setup_networking (GsPlugin *plugin, GError **error)
return TRUE;
}
-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
-sign_message (SoupMessage *message, OAuthMethod method,
- const gchar *oauth_consumer_key, const gchar *oauth_consumer_secret,
- const gchar *oauth_token, const gchar *oauth_token_secret)
-{
- g_autofree gchar *url = NULL, *oauth_authorization_parameters = NULL, *authorization_text = NULL;
- gchar **url_parameters = NULL;
- int url_parameters_length;
-
- url = soup_uri_to_string (soup_message_get_uri (message), FALSE);
-
- url_parameters_length = oauth_split_url_parameters(url, &url_parameters);
- oauth_sign_array2_process (&url_parameters_length, &url_parameters,
- NULL,
- method,
- message->method,
- oauth_consumer_key, oauth_consumer_secret,
- oauth_token, oauth_token_secret);
- oauth_authorization_parameters = oauth_serialize_url_sep (url_parameters_length, 1, url_parameters,
", ", 6);
- oauth_free_array (&url_parameters_length, &url_parameters);
- authorization_text = g_strdup_printf ("OAuth realm=\"Ratings and Reviews\", %s",
oauth_authorization_parameters);
- soup_message_headers_append (message->request_headers, "Authorization", authorization_text);
-}
-
-static void
-set_request (SoupMessage *message, JsonBuilder *builder)
-{
- JsonGenerator *generator = json_generator_new ();
- json_generator_set_root (generator, json_builder_get_root (builder));
- gsize length;
- gchar *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_rating (GsPlugin *plugin,
- GsApp *app,
- const gchar *package_name,
- GError **error)
-{
- g_autofree gchar *uri = NULL, *path = NULL;
- g_autofree gchar *oauth_consumer_key = NULL, *oauth_consumer_secret = NULL, *oauth_token = NULL,
*oauth_token_secret = NULL;
- const gchar *review_text = NULL;
- g_autoptr(GKeyFile) config = NULL;
- gint rating, n_stars = 0;
- g_autoptr(SoupMessage) msg = NULL;
- JsonBuilder *builder;
- guint status_code;
-
- /* Ubuntu reviews require a summary and description - just make one up for now */
- rating = gs_app_get_rating (app);
- if (rating > 80) {
- review_text = "★★★★★";
- n_stars = 5;
- }
- else if (rating > 60) {
- review_text = "★★★★";
- n_stars = 4;
- }
- else if (rating > 40) {
- review_text = "★★★";
- n_stars = 3;
- }
- else if (rating > 20) {
- review_text = "★★";
- n_stars = 2;
- }
- else {
- review_text = "★";
- n_stars = 1;
- }
-
- /* Load OAuth token - FIXME needs to integrate with GNOME Online Accounts / libaccounts */
- config = g_key_file_new ();
- path = g_build_filename (g_get_user_config_dir (), "gnome-software", "ubuntu-one-credentials", NULL);
- g_key_file_load_from_file (config, path, G_KEY_FILE_NONE, NULL);
- oauth_consumer_key = g_key_file_get_string (config, "gnome-software", "consumer-key", NULL);
- oauth_consumer_secret = g_key_file_get_string (config, "gnome-software", "consumer-secret", NULL);
- oauth_token = g_key_file_get_string (config, "gnome-software", "token", NULL);
- oauth_token_secret = g_key_file_get_string (config, "gnome-software", "token-secret", NULL);
- if (!oauth_consumer_key || !oauth_consumer_secret || !oauth_token || !oauth_token_secret) {
- g_set_error (error,
- GS_PLUGIN_ERROR,
- GS_PLUGIN_ERROR_FAILED,
- "%s", "No Ubuntu One OAuth tokens");
- return FALSE;
- }
-
- 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", review_text);
- add_string_member (builder, "review_text", review_text);
- add_string_member (builder, "language", "en"); // FIXME
- add_string_member (builder, "origin", gs_app_get_origin (app));
- add_string_member (builder, "distroseries", "xenial"); // FIXME
- add_string_member (builder, "version", gs_app_get_version (app));
- add_int_member (builder, "rating", n_stars);
- add_string_member (builder, "arch_tag", "amd64"); // FIXME
- json_builder_end_object (builder);
- set_request (msg, builder);
- g_object_unref (builder);
- sign_message (msg, OA_HMAC, oauth_consumer_key, oauth_consumer_secret, oauth_token,
oauth_token_secret);
-
- status_code = soup_session_send_message (plugin->priv->session, msg);
- if (status_code != SOUP_STATUS_OK) {
- g_set_error (error,
- GS_PLUGIN_ERROR,
- GS_PLUGIN_ERROR_FAILED,
- "Failed to post review: %s",
- soup_status_get_phrase (status_code));
- return FALSE;
- }
-
- return TRUE;
-}
-
gboolean
gs_plugin_app_set_rating (GsPlugin *plugin,
GsApp *app,
GCancellable *cancellable,
GError **error)
{
- GPtrArray *sources;
- const gchar *package_name;
- gboolean ret;
- guint i;
- g_autoptr(SoupMessage) msg = NULL;
-
- /* get the package name */
- sources = gs_app_get_sources (app);
- if (sources->len == 0) {
- g_warning ("no package name for %s", gs_app_get_id (app));
- return TRUE;
- }
-
- if (!setup_networking (plugin, error))
- return FALSE;
-
- /* set rating for each package */
- for (i = 0; i < sources->len; i++) {
- package_name = g_ptr_array_index (sources, i);
- ret = set_package_rating (plugin,
- app,
- package_name,
- error);
- if (!ret)
- return FALSE;
- }
-
- return TRUE;
+ /* We don't do ratings - needs a full review instead */
+ return FALSE;
}
static gint
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]