From 91e64f3ea1df89f96ef9b0cec90f858ce065951c Mon Sep 17 00:00:00 2001 From: Bart Kessels Date: Tue, 23 Jan 2018 13:59:09 +0100 Subject: [PATCH] Add JSON view --- src/getit-content-response.c | 34 +++++++++++++++++++++++++++++----- src/getit-content-response.h | 1 + src/ui/content_response.glade | 1 + 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/getit-content-response.c b/src/getit-content-response.c index d1f2ac5..a609a67 100644 --- a/src/getit-content-response.c +++ b/src/getit-content-response.c @@ -113,6 +113,8 @@ getit_content_response_show_response (GetitContentResponse *self, GtkTextBuffer *text_buffer_pretty; GtkTextBuffer *text_buffer_raw; const gchar *mimetype; + GError *json_error; + JsonParser *json_parser; GString *string_response; GBytes *bytes_response; @@ -146,11 +148,13 @@ getit_content_response_show_response (GetitContentResponse *self, gtk_text_buffer_set_text (text_buffer_pretty, "", 0); gtk_text_buffer_set_text (text_buffer_raw, "", 0); - /* Add body to sourceviews if it's not null */ - if (body != NULL) { - gtk_text_buffer_set_text (text_buffer_pretty, body, strlen (body)); - gtk_text_buffer_set_text (text_buffer_raw, body, strlen (body)); - } + /* Don't continue if the body is empty */ + gtk_widget_show_all (GTK_WIDGET (self->grd_output)); + g_return_if_fail (body != NULL); + + /* Add body to sourceviews */ + gtk_text_buffer_set_text (text_buffer_pretty, body, strlen (body)); + gtk_text_buffer_set_text (text_buffer_raw, body, strlen (body)); /* Get mimetype */ mimetype = NULL; @@ -158,6 +162,26 @@ getit_content_response_show_response (GetitContentResponse *self, mimetype = gtk_source_language_get_mime_types (language)[0]; } + /* Make JSON response readable */ + json_parser = json_parser_new (); + json_parser_load_from_data (json_parser, body, strlen (body), &json_error); + + if (json_error == NULL) { + JsonNode *root_node; + JsonGenerator *json_generator; + const gchar *pretty_json; + + root_node = json_parser_get_root (json_parser); + json_generator = json_generator_new (); + + json_generator_set_root (json_generator, root_node); + json_generator_set_pretty (json_generator, TRUE); + + pretty_json = json_generator_to_data (json_generator, NULL); + + gtk_text_buffer_set_text (text_buffer_pretty, pretty_json, strlen(pretty_json)); + } + /* Load webview */ string_response = g_string_new (body); bytes_response = g_string_free_to_bytes (string_response); diff --git a/src/getit-content-response.h b/src/getit-content-response.h index 3ec8eab..8abc7e3 100644 --- a/src/getit-content-response.h +++ b/src/getit-content-response.h @@ -24,6 +24,7 @@ #include #include #include +#include #include "getit-messages.h" diff --git a/src/ui/content_response.glade b/src/ui/content_response.glade index 61c97de..3a510ff 100644 --- a/src/ui/content_response.glade +++ b/src/ui/content_response.glade @@ -172,6 +172,7 @@ True True + 5 left