GError* m2v2_json_load_single_chunk (struct json_object *j, gpointer *pbean) { GError *err = NULL; GByteArray *hid = NULL, *hash = NULL; struct bean_CHUNKS_s *chunk = NULL; struct json_object *jid, *jcontent, *jhash, *jsize, *jctime, *jpos; struct oio_ext_json_mapping_s mapping[] = { {"id", &jid, json_type_string, 1}, {"hash", &jhash, json_type_string, 1}, {"size", &jsize, json_type_int, 1}, {"ctime", &jctime, json_type_int, 0}, {"content", &jcontent, json_type_string, 1}, {"pos", &jpos, json_type_string, 1}, {NULL, NULL, 0, 0} }; *pbean = NULL; if (NULL != (err = oio_ext_extract_json (j, mapping))) return err; hid = metautils_gba_from_hexstring(json_object_get_string(jid)); if (!hid) { err = NEWERROR(CODE_BAD_REQUEST, "Invalid header, not hexa id"); goto exit; } hash = metautils_gba_from_hexstring(json_object_get_string(jhash)); if (!hash) { err = NEWERROR(CODE_BAD_REQUEST, "Invalid chunk, not hexa header id"); goto exit; } chunk = _bean_create (&descr_struct_CHUNKS); CHUNKS_set2_id (chunk, json_object_get_string(jid)); CHUNKS_set_hash (chunk, hash); CHUNKS_set_size (chunk, json_object_get_int64(jsize)); CHUNKS_set_ctime (chunk, !jctime ? g_get_real_time() / G_TIME_SPAN_SECOND : json_object_get_int64(jctime)); CHUNKS_set_content (chunk, hid); CHUNKS_set2_position (chunk, json_object_get_string (jpos)); *pbean = chunk; chunk = NULL; exit: metautils_gba_unref (hid); metautils_gba_unref (hash); _bean_clean (chunk); return err; }
GError* m2v2_json_load_single_chunk (struct json_object *j, gpointer *pbean) { GError *err = NULL; GByteArray *hash = NULL; struct bean_CHUNKS_s *chunk = NULL; struct json_object *jid, *jhash, *jsize; struct metautils_json_mapping_s mapping[] = { {"id", &jid, json_type_string, 1}, {"hash", &jhash, json_type_string, 1}, {"size", &jsize, json_type_int, 1}, {NULL, NULL, 0, 0} }; *pbean = NULL; if (NULL != (err = metautils_extract_json (j, mapping))) return err; hash = metautils_gba_from_hexstring(json_object_get_string(jhash)); if (!hash) { err = NEWERROR(CODE_BAD_REQUEST, "Invalid chunk, not hexa header id"); goto exit; } chunk = _bean_create (&descr_struct_CHUNKS); CHUNKS_set2_id (chunk, json_object_get_string(jid)); CHUNKS_set2_hash (chunk, hash->data, hash->len); CHUNKS_set_size (chunk, json_object_get_int64(jsize)); CHUNKS_set_ctime (chunk, 0); *pbean = chunk; chunk = NULL; exit: metautils_gba_unref (hash); _bean_clean (chunk); return err; }