[gnome-software/wip/hughsie/GsPluginEvent: 20/24] fedora-distro-upgrades: Add a cached source to improve error logging



commit e90c8aa09ab33fe5343d63949221e59f6dbfd167
Author: Richard Hughes <richard hughsie com>
Date:   Wed Sep 7 17:49:32 2016 +0100

    fedora-distro-upgrades: Add a cached source to improve error logging

 src/plugins/gs-plugin-fedora-distro-upgrades.c |   37 ++++++++++++++++++++----
 1 files changed, 31 insertions(+), 6 deletions(-)
---
diff --git a/src/plugins/gs-plugin-fedora-distro-upgrades.c b/src/plugins/gs-plugin-fedora-distro-upgrades.c
index 70056a2..925256a 100644
--- a/src/plugins/gs-plugin-fedora-distro-upgrades.c
+++ b/src/plugins/gs-plugin-fedora-distro-upgrades.c
@@ -24,13 +24,14 @@
 #include <json-glib/json-glib.h>
 #include <gnome-software.h>
 
-#define FEDORA_PKGDB_COLLECTIONS_API_URI "https://admin.fedoraproject.org/pkgdb/api/collections/";
+#define FEDORA_PKGDB_COLLECTIONS_API_URI "https://adminXXX.fedoraproject.org/pkgdb/api/collections/";
 
 struct GsPluginData {
        gchar           *cachefn;
        GFileMonitor    *cachefn_monitor;
        gchar           *os_name;
        guint64          os_version;
+       GsApp           *cached_origin;
 };
 
 void
@@ -51,6 +52,8 @@ gs_plugin_destroy (GsPlugin *plugin)
        GsPluginData *priv = gs_plugin_get_data (plugin);
        if (priv->cachefn_monitor != NULL)
                g_object_unref (priv->cachefn_monitor);
+       if (priv->cached_origin != NULL)
+               g_object_unref (priv->cached_origin);
        g_free (priv->os_name);
        g_free (priv->cachefn);
 }
@@ -127,6 +130,22 @@ gs_plugin_setup (GsPlugin *plugin, GCancellable *cancellable, GError **error)
                return FALSE;
        }
 
+       /* add source */
+       priv->cached_origin = gs_app_new (gs_plugin_get_name (plugin));
+       gs_app_set_kind (priv->cached_origin, AS_APP_KIND_GENERIC);
+       gs_app_set_state (priv->cached_origin, AS_APP_STATE_INSTALLED);
+       gs_app_set_scope (priv->cached_origin, AS_APP_SCOPE_SYSTEM);
+       gs_app_set_bundle_kind (priv->cached_origin, AS_BUNDLE_KIND_PACKAGE);
+       gs_app_set_origin_ui (priv->cached_origin, "Fedora Project PkgDb");
+       gs_app_set_origin_hostname (priv->cached_origin,
+                                   FEDORA_PKGDB_COLLECTIONS_API_URI);
+
+       /* add the source to the plugin cache which allows us to match the
+        * unique ID to a GsApp when creating an event */
+       gs_plugin_cache_add (plugin,
+                            gs_app_get_unique_id (priv->cached_origin),
+                            priv->cached_origin);
+
        /* success */
        return TRUE;
 }
@@ -151,11 +170,17 @@ gs_plugin_fedora_distro_upgrades_refresh (GsPlugin *plugin,
        }
 
        /* download new file */
-       return gs_plugin_download_file (plugin, NULL,
-                                       FEDORA_PKGDB_COLLECTIONS_API_URI,
-                                       priv->cachefn,
-                                       cancellable,
-                                       error);
+       if (!gs_plugin_download_file (plugin, NULL,
+                                     FEDORA_PKGDB_COLLECTIONS_API_URI,
+                                     priv->cachefn,
+                                     cancellable,
+                                     error)) {
+               gs_plugin_error_add_unique_id (error, priv->cached_origin);
+               return FALSE;
+       }
+
+       /* success */
+       return TRUE;
 }
 
 gboolean


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