Skip to content

Commit

Permalink
Add JSON view
Browse files Browse the repository at this point in the history
  • Loading branch information
bartkessels committed Jan 23, 2018
1 parent 88e9ad3 commit 91e64f3
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 5 deletions.
34 changes: 29 additions & 5 deletions src/getit-content-response.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -146,18 +148,40 @@ 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;
if (language != NULL) {
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);
Expand Down
1 change: 1 addition & 0 deletions src/getit-content-response.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#include <libsoup/soup.h>
#include <string.h>
#include <webkit2/webkit2.h>
#include <json-glib/json-glib.h>

#include "getit-messages.h"

Expand Down
1 change: 1 addition & 0 deletions src/ui/content_response.glade
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,7 @@
<object class="GtkNotebook" id="nb_output">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="margin_top">5</property>
<property name="tab_pos">left</property>
<child>
<object class="GtkScrolledWindow" id="sw_output_pretty">
Expand Down

0 comments on commit 91e64f3

Please sign in to comment.