Exemplo n.º 1
0
static gboolean
parse_httpstream_response (CockpitChannelResponse *chesp,
                           JsonObject *object,
                           gint64 *status,
                           const gchar **reason)
{
  JsonNode *node;

  if (!cockpit_json_get_int (object, "status", 200, status) ||
      !cockpit_json_get_string (object, "reason", NULL, reason))
    {
      g_warning ("%s: received invalid httpstream response", chesp->logname);
      return FALSE;
    }

  node = json_object_get_member (object, "headers");
  if (node)
    {
      if (!JSON_NODE_HOLDS_OBJECT (node))
        {
          g_warning ("%s: received invalid httpstream headers", chesp->logname);
          return FALSE;
        }
      json_object_foreach_member (json_node_get_object (node), object_to_headers, chesp->headers);
    }

  return TRUE;
}
static GHashTable* toHashTable(std::string msg)
{
    g_print("toHashTable\n");
    JsonParser *parser;
    GError *error = NULL;

    parser = json_parser_new ();

    GHashTable *map = g_hash_table_new(g_str_hash, g_str_equal);

    if (json_parser_load_from_data (parser, msg.c_str(), -1, &error))
    {
        JsonNode *root;
        JsonObject *object;

        g_assert (NULL != json_parser_get_root (parser));

        root = json_parser_get_root (parser);
        if (JSON_NODE_TYPE (root) == JSON_NODE_OBJECT)
        {
            object = json_node_get_object (root);
            g_assert (object != NULL);

            json_object_foreach_member(object, parseMembers, map);
        }
    }
    else
    {
        g_error_free (error);
    }
    g_object_unref (parser);

    return map;
}
static GHashTable* _get_json_params(JsonObject* object)
{
    GHashTable* params = g_hash_table_new_full((GHashFunc)g_str_hash,
                                          (GEqualFunc)g_str_equal,
                                          (GDestroyNotify)g_free,
                                          (GDestroyNotify)g_free
                                         );
    json_object_foreach_member(object, _iterate_json_object, params);
    return params;
}
Exemplo n.º 4
0
GstStructure *
snra_json_to_gst_structure (JsonNode * root)
{
  GstStructure *s = NULL;
  JsonObject *o;

  if (!JSON_NODE_HOLDS_OBJECT (root))
    return NULL;

  s = gst_structure_new ("json", NULL, NULL);

  o = json_node_get_object (root);
  json_object_foreach_member (o,
      (JsonObjectForeach) snra_gst_struct_from_object, s);

  return s;
}
GSList *
desktopcouch_document_contact_get_urls (CouchdbDocument *document)
{
	GSList *list = NULL;
	JsonObject *urls;

	g_return_val_if_fail (COUCHDB_IS_DOCUMENT (document), NULL);
	g_return_val_if_fail (desktopcouch_document_is_contact (document), NULL);

	urls = json_object_get_object_member (
		couchdb_document_get_json_object (document), "urls");
	if (urls) {
		json_object_foreach_member (urls,
					    (JsonObjectForeach) foreach_object_cb,
					    &list);
	}

	return list;
}
GSList *
desktopcouch_document_contact_get_im_addresses (CouchdbDocument *document)
{
	GSList *list = NULL;
	JsonObject *im_addresses;

	g_return_val_if_fail (COUCHDB_IS_DOCUMENT (document), NULL);
	g_return_val_if_fail (desktopcouch_document_is_contact (document), NULL);

	im_addresses = json_object_get_object_member (
		couchdb_document_get_json_object (document), "im_addresses");
	if (im_addresses != NULL) {
		json_object_foreach_member (im_addresses,
					    (JsonObjectForeach) foreach_object_cb,
					    &list);
	}

	return list;
}
Exemplo n.º 7
0
/**
 * couchdb_document_contact_get_addresses:
 * @document: A #CouchdbDocumentContact object
 *
 * Get the list of addresses for this contact document.
 *
 * Returns: (element-type Couchdb.StructField) (transfer full): A #GSList of
 * #CouchdbStructField's representing all the addresses stored for this
 * contact.
 */
GSList *
couchdb_document_contact_get_addresses (CouchdbDocumentContact *document)
{
	GSList *list = NULL;
	JsonObject *addresses;

	g_return_val_if_fail (COUCHDB_IS_DOCUMENT_CONTACT (document), NULL);
	g_return_val_if_fail (couchdb_document_is_contact (COUCHDB_DOCUMENT (document)), NULL);

	if (json_object_has_member (couchdb_document_get_json_object (COUCHDB_DOCUMENT (document)),
				    "addresses")) {
		addresses = json_object_get_object_member (
			couchdb_document_get_json_object (COUCHDB_DOCUMENT (document)), "addresses");
		if (addresses) {
			json_object_foreach_member (addresses,
						    (JsonObjectForeach) foreach_object_cb,
						    &list);
		}
	}

	return list;
}
static GValue *getValue(JsonNode *node)
{
    GValue *p = new GValue;
    GValue &ret = *p;

    switch (JSON_NODE_TYPE(node))
    {
    case JSON_NODE_OBJECT:
        {
            JsonObject *node_object;
            node_object = json_node_get_object (node);
            g_assert (node_object != NULL);

            GHashTable *object = g_hash_table_new(g_str_hash, g_str_equal);
            json_object_foreach_member(node_object, parseMembers, object);

            g_value_init(&ret, G_TYPE_HASH_TABLE);
            g_value_set_boxed(&ret, object);
        }
        break;
    case JSON_NODE_ARRAY:
        {
            JsonArray *node_array;
            node_array = json_node_get_array (node);
            g_assert (node_array != NULL);

            GValueArray *array = g_value_array_new(0);
            json_array_foreach_element(node_array, parseElements, array);

            g_value_init(&ret, G_TYPE_VALUE_ARRAY);
            g_value_set_boxed(&ret, array);
        }
        break;
    case JSON_NODE_VALUE:
        {
            switch (json_node_get_value_type(node))
            {
            case G_TYPE_INT64:
                {
                    gint64 val = json_node_get_int(node);
                    g_value_init (&ret, G_TYPE_INT64);
                    g_value_set_int64(&ret, val);
                }
                break;

            case G_TYPE_DOUBLE:
                {
                    double val = json_node_get_double(node);
                    g_value_init (&ret, G_TYPE_INT64);
                    g_value_set_double(&ret, val);
                }
                break;

            case G_TYPE_BOOLEAN:
                {
                    bool val = json_node_get_boolean(node);
                    g_value_init (&ret, G_TYPE_INT64);
                    g_value_set_boolean(&ret, val);
                }
                break;

            case G_TYPE_STRING:
                {
                    const gchar * str = json_node_get_string(node);
                    g_value_init (&ret, G_TYPE_STRING);
                    g_value_set_string(&ret, str);
                }
                break;
            default:
                break;
            }
        }
        break;
    case JSON_NODE_NULL:
        break;
    }
    return &ret;
}