8 #include <json-glib/json-glib.h>
13 #define G_LOG_DOMAIN "lib misc"
125 const char *
hostname,
size_t hostname_len)
129 if (source == NULL ||
hostname == NULL)
131 if ((data = calloc (1,
sizeof (*data))) == NULL)
134 if ((hnd = calloc (1,
sizeof (*hnd))) == NULL)
137 hnd->
source = g_strdup (source);
177 gchar *ua_str = NULL;
182 if ((data = calloc (1,
sizeof (*data))) == NULL)
186 if ((uad = calloc (1,
sizeof (*uad))) == NULL)
228 switch ((*data)->type)
253 JsonBuilder *builder;
267 builder = json_builder_new ();
269 json_builder_begin_object (builder);
271 json_builder_set_member_name (builder,
"type");
272 builder = json_builder_add_int_value (builder,
type);
277 json_builder_set_member_name (builder,
"source");
278 builder = json_builder_add_string_value (builder, hn->
source);
279 json_builder_set_member_name (builder,
"hostname");
280 builder = json_builder_add_string_value (builder, hn->
hostname);
285 json_builder_set_member_name (builder,
"user-agent");
286 builder = json_builder_add_string_value (builder, ua->
user_agent);
290 g_warning (
"%s: Unknown data type %d.", __func__,
type);
293 json_builder_end_object (builder);
295 gen = json_generator_new ();
296 root = json_builder_get_root (builder);
297 json_generator_set_root (gen, root);
298 json_str = json_generator_to_data (gen, NULL);
300 json_node_free (root);
301 g_object_unref (gen);
302 g_object_unref (builder);
304 if (json_str == NULL)
305 g_warning (
"%s: Error while creating JSON.", __func__);
321 JsonParser *parser = NULL;
322 JsonReader *reader = NULL;
330 if ((ret = calloc (1,
sizeof (*ret))) == NULL)
337 parser = json_parser_new ();
338 if (!json_parser_load_from_data (parser, json,
len, &err))
343 reader = json_reader_new (json_parser_get_root (parser));
345 if (!json_reader_read_member (reader,
"type"))
350 type = json_reader_get_int_value (reader);
352 json_reader_end_member (reader);
359 if ((hn = calloc (1,
sizeof (*hn))) == NULL)
361 if (!json_reader_read_member (reader,
"hostname"))
366 hn->
hostname = g_strdup (json_reader_get_string_value (reader));
368 json_reader_end_member (reader);
369 if (!json_reader_read_member (reader,
"source"))
374 hn->
source = g_strdup (json_reader_get_string_value (reader));
376 json_reader_end_member (reader);
382 if ((ua = calloc (1,
sizeof (*ua))) == NULL)
384 if (!json_reader_read_member (reader,
"user-agent"))
389 ua->
user_agent = g_strdup (json_reader_get_string_value (reader));
391 json_reader_end_member (reader);
398 g_object_unref (reader);
399 g_object_unref (parser);
403 g_warning (
"%s: Unable to parse json (%s). Reason: %s", __func__, json,