Пример #1
0
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;
}
Пример #2
0
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;
}