projects
/
collection4.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
show_instance action: Fix the time arguments.
[collection4.git]
/
src
/
action_show_graph_json.c
diff --git
a/src/action_show_graph_json.c
b/src/action_show_graph_json.c
index
a182a62
..
0820fb0
100644
(file)
--- a/
src/action_show_graph_json.c
+++ b/
src/action_show_graph_json.c
@@
-40,83
+40,57
@@
#include <fcgiapp.h>
#include <fcgi_stdio.h>
#include <fcgiapp.h>
#include <fcgi_stdio.h>
-struct show_graph_data_s
+static void write_callback (__attribute__((unused)) void *ctx, /* {{{ */
+ const char *str, unsigned int len)
{
{
- graph_config_t *cfg;
- _Bool first;
-};
-typedef struct show_graph_data_s show_graph_data_t;
+ fwrite ((void *) str, /* size = */ len, /* nmemb = */ 1, stdout);
+} /* }}} void write_callback */
-static int show_instance_cb (graph_instance_t *inst, /* {{{ */
- void *user_data)
+int action_show_graph_json (void) /* {{{ */
{
{
- show_graph_data_t *data = user_data;
- graph_ident_t *ident;
- char *ident_json;
-
- ident = inst_get_selector (inst);
- if (ident == NULL)
- return (ENOMEM);
-
- ident_json = ident_to_json (ident);
- if (ident_json == NULL)
- {
- ident_destroy (ident);
- return (ENOMEM);
- }
-
- if (!data->first)
- printf (",\n");
- data->first = 0;
+ graph_config_t *cfg;
- printf (" %s", ident_json);
+ yajl_gen_config handler_config;
+ yajl_gen handler;
- free (ident_json);
- ident_destroy (ident);
- return (0);
-} /* }}} int show_instance_cb */
+ time_t now;
+ char time_buffer[128];
+ int status;
-int action_show_graph_json (void) /* {{{ */
-{
- show_graph_data_t data;
- char title[1024];
- graph_ident_t *ident;
- char *ident_json;
-
- memset (&data, 0, sizeof (data));
- data.first = 1;
- data.cfg = gl_graph_get_selected ();
- if (data.cfg == NULL)
+ cfg = gl_graph_get_selected ();
+ if (cfg == NULL)
return (ENOMEM);
return (ENOMEM);
-
ident = graph_get_selector (data.cfg
);
- if (ident == NULL)
-
return (ENOMEM)
;
+
memset (&handler_config, 0, sizeof (handler_config)
);
+ handler_config.beautify = 1;
+
handler_config.indentString = " "
;
- ident_json = ident_to_json (ident);
- if (ident_json == NULL)
+ handler = yajl_gen_alloc2 (write_callback,
+ &handler_config,
+ /* alloc functions = */ NULL,
+ /* context = */ NULL);
+ if (handler == NULL)
{
{
-
ident_destroy (ident
);
- return (
ENOMEM
);
+
graph_destroy (cfg
);
+ return (
-1
);
}
}
- printf ("Content-Type: text/plain\n\n");
+ printf ("Content-Type: application/json\n");
+
+ now = time (NULL);
+ status = time_to_rfc1123 (now + 300, time_buffer, sizeof (time_buffer));
+ if (status == 0)
+ printf ("Expires: %s\n"
+ "Cache-Control: public\n",
+ time_buffer);
+ printf ("\n");
- memset (title, 0, sizeof (title));
- graph_get_title (data.cfg, title, sizeof (title));
- json_escape_buffer (title, sizeof (title));
+ status = graph_to_json (cfg, handler);
- printf ("{\n");
- printf (" \"title\": \"%s\",\n", title);
- printf (" \"selector\": %s,\n", ident_json);
- printf (" \"instances\":\n");
- printf (" [\n");
- graph_inst_foreach (data.cfg, show_instance_cb, &data);
- printf ("\n ]\n}\n");
+ graph_destroy (cfg);
+ yajl_gen_free (handler);
- free (ident_json);
- ident_destroy (ident);
- return (0);
+ return (status);
} /* }}} int action_show_graph_json */
/* vim: set sw=2 sts=2 et fdm=marker : */
} /* }}} int action_show_graph_json */
/* vim: set sw=2 sts=2 et fdm=marker : */