[gnome-battery-bench] JSON support for GbbSystemInfo



commit 02e78c5def4ec75e904625bd7c342bdf07bfd2ba
Author: Christian Kellner <gicmo gnome org>
Date:   Tue Jan 17 17:14:51 2017 +0100

    JSON support for GbbSystemInfo

 src/system-info.c |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/system-info.h |    6 ++++-
 2 files changed, 60 insertions(+), 1 deletions(-)
---
diff --git a/src/system-info.c b/src/system-info.c
index 0c55f50..4e20d5c 100644
--- a/src/system-info.c
+++ b/src/system-info.c
@@ -295,6 +295,61 @@ gbb_system_info_acquire ()
     return info;
 }
 
+void
+gbb_system_info_to_json (const GbbSystemInfo *info, JsonBuilder *builder)
+{
+    json_builder_begin_object(builder);
+    json_builder_set_member_name(builder, "hardware");
+    {
+        json_builder_begin_object(builder);
+        json_builder_set_member_name(builder, "vendor");
+        json_builder_add_string_value(builder, info->sys_vendor);
+        json_builder_set_member_name(builder, "version");
+        json_builder_add_string_value(builder, info->product_version);
+        json_builder_set_member_name(builder, "name");
+        json_builder_add_string_value(builder, info->product_name);
+
+        json_builder_set_member_name(builder, "bios");
+        {
+            json_builder_begin_object(builder);
+            json_builder_set_member_name(builder, "version");
+            json_builder_add_string_value(builder, info->bios_version);
+            json_builder_set_member_name(builder, "date");
+            json_builder_add_string_value(builder, info->bios_date);
+            json_builder_set_member_name(builder, "vendor");
+            json_builder_add_string_value(builder, info->bios_vendor);
+            json_builder_end_object(builder);
+        }
+        json_builder_end_object(builder);
+    }
+    json_builder_set_member_name(builder, "software");
+    {
+        json_builder_begin_object(builder);
+        json_builder_set_member_name(builder, "os");
+        {
+            json_builder_begin_object(builder);
+            json_builder_set_member_name(builder, "type");
+            json_builder_add_string_value(builder, info->os_type);
+            json_builder_set_member_name(builder, "kernel");
+            json_builder_add_string_value(builder, info->os_kernel);
+            json_builder_end_object(builder);
+        }
+        json_builder_set_member_name(builder, "gnome");
+        {
+            json_builder_begin_object(builder);
+            json_builder_set_member_name(builder, "version");
+            json_builder_add_string_value(builder, info->gnome_version);
+            json_builder_set_member_name(builder, "distributor");
+            json_builder_add_string_value(builder, info->gnome_distributor);
+            json_builder_set_member_name(builder, "date");
+            json_builder_add_string_value(builder, info->gnome_date);
+            json_builder_end_object(builder);
+        }
+        json_builder_end_object(builder);
+    }
+    json_builder_end_object(builder);
+}
+
 /* GNOME system info */
 /* Everything below has been mostly borrowed from
  * gnome-control-center/panels/info/cc-info-panel.c
diff --git a/src/system-info.h b/src/system-info.h
index 27ad333..e7515d1 100644
--- a/src/system-info.h
+++ b/src/system-info.h
@@ -2,10 +2,14 @@
 #define __SYSTEM_INFO_H__
 
 #include <glib-object.h>
+#include <json-glib/json-glib.h>
 
 #define GBB_TYPE_SYSTEM_INFO gbb_system_info_get_type()
 G_DECLARE_FINAL_TYPE(GbbSystemInfo, gbb_system_info, GBB, SYSTEM_INFO, GObject)
 
-GbbSystemInfo *gbb_system_info_acquire (void);
+GbbSystemInfo *gbb_system_info_acquire       (void);
+void           gbb_system_info_to_json       (const GbbSystemInfo *info,
+                                              JsonBuilder         *builder);
+
 
 #endif /* __SYSTEM_INFO_H__ */


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