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; }
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; }
/** * 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; }