Example #1
0
/**
 * json_builder_add_null_value:
 * @builder: a #JsonBuilder
 *
 * If called after json_builder_set_member_name(), sets null as member of the
 * most recent opened object, otherwise null is added as element of the most
 * recent opened array.
 *
 * See also: json_builder_add_value()
 *
 * Return value: (transfer none): the #JsonBuilder, or %NULL if the call was inconsistent
 */
JsonBuilder *
json_builder_add_null_value (JsonBuilder *builder)
{
  JsonBuilderState *state;

  g_return_val_if_fail (JSON_IS_BUILDER (builder), NULL);
  g_return_val_if_fail (!g_queue_is_empty (builder->priv->stack), NULL);
  g_return_val_if_fail (json_builder_is_valid_add_mode (builder), NULL);

  state = g_queue_peek_head (builder->priv->stack);

  switch (state->mode)
    {
    case JSON_BUILDER_MODE_MEMBER:
      json_object_set_null_member (state->data.object, state->member_name);
      g_free (state->member_name);
      state->member_name = NULL;
      state->mode = JSON_BUILDER_MODE_OBJECT;
      break;

    case JSON_BUILDER_MODE_ARRAY:
      json_array_add_null_element (state->data.array);
      break;

    default:
      g_assert_not_reached ();
    }

  return builder;
}
Example #2
0
/* Marshal functions */
void
searpc_set_string_to_ret_object (JsonObject *object, gchar *ret)
{
    if (ret == NULL)
        json_object_set_null_member (object, "ret");
    else {
        json_object_set_string_member (object, "ret", ret);
        g_free (ret);
    }
}
Example #3
0
void
searpc_set_object_to_ret_object (JsonObject *object, GObject *ret)
{
    if (ret == NULL)
        json_object_set_null_member (object, "ret");
    else {
        json_object_set_member (object, "ret", json_gobject_serialize(ret));
        g_object_unref (ret);
    }
}
Example #4
0
static void
cockpit_router_ban_hosts (CockpitRouter *self)
{
  RouterRule *rule;
  JsonObject *match = json_object_new ();

  json_object_set_null_member (match, "host");
  rule = g_new0 (RouterRule, 1);
  rule->callback = process_open_not_supported;
  router_rule_compile (rule, match);

  self->rules = g_list_prepend (self->rules, rule);
  json_object_unref (match);
}
Example #5
0
void
searpc_set_objlist_to_ret_object (JsonObject *object, GList *ret)
{
    GList *ptr;
    
    if (ret == NULL)
        json_object_set_null_member (object, "ret");
    else {
        JsonArray *array = json_array_new ();
        for (ptr = ret; ptr; ptr = ptr->next)
            json_array_add_element (array, json_gobject_serialize (ptr->data));
        json_object_set_array_member (object, "ret", array);

        for (ptr = ret; ptr; ptr = ptr->next)
            g_object_unref (ptr->data);
        g_list_free (ret);
    }
}
Example #6
0
} END_TEST

/* FIXME: more tests required for:
 *
 * - object containing an array (of various types).
 * - object containing an object (containing various types).
 * - object containing a double.
 */
START_TEST(test_cc_oci_json_obj_to_string) {
	gchar *str;
	JsonObject *obj;
	gboolean ret;
	gchar **fields;
	gchar *value;

	ck_assert (! cc_oci_json_obj_to_string (NULL, false, NULL));
	ck_assert (! cc_oci_json_obj_to_string (NULL, true, NULL));

	obj = json_object_new ();

	/* empty object, non-pretty */
	str = cc_oci_json_obj_to_string (obj, false, NULL);
	ck_assert (str);

	ret = g_regex_match_simple (
			/* pair of braces containing optional
			 * whitespace.
			 */
			"{\\s*}",
			str, 0, 0);
	ck_assert (ret);
	g_free (str);

	/* empty object, pretty */
	str = cc_oci_json_obj_to_string (obj, true, NULL);
	ck_assert (str);

	ret = g_regex_match_simple (
			/* pair of braces containing optional
			 * whitespace.
			 */
			"{\\s*}",
			str, 0, 0);
	ck_assert (ret);
	g_free (str);

	/* non-empty object, non-pretty */
	json_object_set_string_member (obj, "test-string-set", "foo");
	json_object_set_string_member (obj, "test-string-empty", "");

	json_object_set_boolean_member (obj, "test-bool-false", false);
	json_object_set_boolean_member (obj, "test-bool-true", true);

	json_object_set_int_member (obj, "test-int-max", G_MAXINT64);
	json_object_set_int_member (obj, "test-int-min", G_MININT64);


	json_object_set_null_member (obj, "test-null");

	str = cc_oci_json_obj_to_string (obj, false, NULL);
	ck_assert (str);

	fields = g_strsplit (str, ",", -1);
	ck_assert (fields);

	g_free (str);

	ck_assert (strv_contains_regex (fields, "test-string-set\\S*foo"));
	ck_assert (strv_contains_regex (fields, "test-string-empty\\S*\"\""));

	ck_assert (strv_contains_regex (fields, "test-bool-true\\S*true"));
	ck_assert (strv_contains_regex (fields, "test-bool-false\\S*false"));

	value = g_strdup_printf ("test-int-max\\S*"
			"%" G_GINT64_FORMAT,
			G_MAXINT64);
	ck_assert (value);

	ck_assert (strv_contains_regex (fields, value));
	g_free (value);

	value = g_strdup_printf ("test-int-min\\S*"
			"%" G_GINT64_FORMAT,
			G_MININT64);
	ck_assert (value);

	ck_assert (strv_contains_regex (fields, value));
	g_free (value);

	g_strfreev (fields);

	/* clean up */
	json_object_unref (obj);

} END_TEST