int oss_list_objects_parse_from_body(aos_pool_t *p, aos_list_t *bc, aos_list_t *object_list, aos_list_t *common_prefix_list, aos_string_t *marker, int *truncated) { int res; mxml_node_t *root; const char next_marker_xml_path[] = "NextMarker"; const char truncated_xml_path[] = "IsTruncated"; const char buckets_xml_path[] = "Contents"; const char common_prefix_xml_path[] = "CommonPrefixes"; char* next_marker; res = get_xmldoc(bc, &root); if (res == AOSE_OK) { next_marker = get_xmlnode_value(p, root, next_marker_xml_path); if (next_marker) { aos_str_set(marker, next_marker); } *truncated = get_truncated_from_xml(p, root, truncated_xml_path); oss_list_objects_contents_parse(p, root, buckets_xml_path, object_list); oss_list_objects_common_prefix_parse(p, root, common_prefix_xml_path, common_prefix_list); mxmlDelete(root); } return res; }
int oss_list_objects_parse_from_body(aos_pool_t *p, aos_list_t *bc, aos_list_t *object_list, aos_list_t *common_prefix_list, aos_string_t *marker, int *truncated) { int res; xmlDocPtr doc = NULL; const char next_marker_xml_path[] = "/ListBucketResult/NextMarker"; const char truncated_xml_path[] = "/ListBucketResult/IsTruncated"; const char buckets_xml_path[] = "/ListBucketResult/Contents"; const char common_prefix_xml_path[] = "/ListBucketResult/CommonPrefixes"; char* next_marker; res = get_xmldoc(bc, &doc); if (res == AOSE_OK) { next_marker = get_xmlnode_value(p, doc, next_marker_xml_path); if (next_marker) { aos_str_set(marker, next_marker); } *truncated = get_truncated_from_xml(p, doc, truncated_xml_path); oss_list_objects_contents_parse(p, doc, buckets_xml_path, object_list); oss_list_objects_common_prefix_parse(p, doc, common_prefix_xml_path, common_prefix_list); xmlFreeDoc(doc); } return res; }