コード例 #1
0
void oss_list_multipart_uploads_content_parse(aos_pool_t *p, mxml_node_t *xml_node, 
    oss_list_multipart_upload_content_t *content)
{
    char *key;
    char *upload_id;
    char *initiated;
    char *node_content;
    mxml_node_t *node;

    node = mxmlFindElement(xml_node, xml_node, "Key",NULL, NULL, MXML_DESCEND);
    if (NULL != node) {
        node_content = node->child->value.opaque;
        key = apr_pstrdup(p, (char *)node_content);
        aos_str_set(&content->key, key);
    }

    node = mxmlFindElement(xml_node, xml_node, "UploadId",NULL, NULL, MXML_DESCEND);
    if (NULL != node) {
        node_content = node->child->value.opaque;
        upload_id = apr_pstrdup(p, (char *)node_content);
        aos_str_set(&content->upload_id, upload_id);
    }

    node = mxmlFindElement(xml_node, xml_node, "Initiated",NULL, NULL, MXML_DESCEND);
    if (NULL != node) {
        node_content = node->child->value.opaque;
        initiated = apr_pstrdup(p, (char *)node_content);
        aos_str_set(&content->initiated, initiated);
    }
}
コード例 #2
0
ファイル: oss_xml.c プロジェクト: lixiaofly/oss
void oss_list_objects_content_parse(aos_pool_t *p, xmlNodePtr xml_node, oss_list_object_content_t *content)
{
    char *key;
    char *last_modified;
    char *etag;
    char *size;

    while (xml_node) {
        xmlChar *node_content = xmlNodeGetContent(xml_node);
        if (apr_strnatcasecmp((char *)xml_node->name, "Key") == 0) {
            key = apr_pstrdup(p, (char *)node_content);
            aos_str_set(&content->key, key);
        } else if (apr_strnatcasecmp((char *)xml_node->name, "LastModified") == 0) {
            last_modified = apr_pstrdup(p, (char *)node_content);
            aos_str_set(&content->last_modified, last_modified);
        } else if (apr_strnatcasecmp((char *)xml_node->name, "ETag") == 0) {
            etag = apr_pstrdup(p, (char *)node_content);
            aos_str_set(&content->etag, etag);
        } else if (apr_strnatcasecmp((char *)xml_node->name, "Size") == 0) {
            size = apr_pstrdup(p, (char *)node_content);
            aos_str_set(&content->size, size);
        } else if (apr_strnatcasecmp((char *)xml_node->name, "Owner") == 0) {
            oss_list_objects_owner_parse(p, xml_node, content);
        }
        xmlFree(node_content);
        xml_node = xml_node->next;
    }
}
コード例 #3
0
ファイル: oss_xml.c プロジェクト: lixiaofly/oss
void oss_list_parts_content_parse(aos_pool_t *p, xmlNodePtr xml_node, oss_list_part_content_t *content)
{
    char *part_number;
    char *last_modified;
    char *etag;
    char *size;

    while (xml_node) {
        xmlChar *node_content = xmlNodeGetContent(xml_node);
        if (apr_strnatcasecmp((char *)xml_node->name, "PartNumber") == 0) {
            part_number = apr_pstrdup(p, (char *)node_content);
            aos_str_set(&content->part_number, part_number);
        } else if (apr_strnatcasecmp((char *)xml_node->name, "LastModified") == 0) {
            last_modified = apr_pstrdup(p, (char *)node_content);
            aos_str_set(&content->last_modified, last_modified);
        } else if (apr_strnatcasecmp((char *)xml_node->name, "ETag") == 0) {
            etag = apr_pstrdup(p, (char *)node_content);
            aos_str_set(&content->etag, etag);
        } else if (apr_strnatcasecmp((char *)xml_node->name, "Size") == 0) {
            size = apr_pstrdup(p, (char *)node_content);
            aos_str_set(&content->size, size);
        }
        xmlFree(node_content);
        xml_node = xml_node->next;
    }
}
コード例 #4
0
int oss_list_multipart_uploads_parse_from_body(aos_pool_t *p, aos_list_t *bc,
    aos_list_t *upload_list, aos_string_t *key_marker,
    aos_string_t *upload_id_marker, int *truncated)
{
    int res;
    mxml_node_t *root;
    const char next_key_marker_xml_path[] = "NextKeyMarker";
    const char next_upload_id_marker_xml_path[] = "NextUploadIdMarker";
    const char truncated_xml_path[] = "IsTruncated";
    const char uploads_xml_path[] = "Upload";
    char *next_key_marker;
    char *next_upload_id_marker;

    res = get_xmldoc(bc, &root);
    if (res == AOSE_OK) {
        next_key_marker = get_xmlnode_value(p, root, next_key_marker_xml_path);
        if (next_key_marker) {
            aos_str_set(key_marker, next_key_marker);
        }

        next_upload_id_marker = get_xmlnode_value(p, root, next_upload_id_marker_xml_path);
        if (next_upload_id_marker) {
            aos_str_set(upload_id_marker, next_upload_id_marker);
        }

        *truncated = get_truncated_from_xml(p, root, truncated_xml_path);

        oss_list_multipart_uploads_contents_parse(p, root, uploads_xml_path, upload_list);

        mxmlDelete(root);
    }

    return res;
}
コード例 #5
0
void head_object()
{
    aos_pool_t *p = NULL;
    aos_string_t bucket;
    aos_string_t object;
    int is_cname = 0;
    oss_request_options_t *options = NULL;
    aos_table_t *headers = NULL;
    aos_table_t *resp_headers = NULL;
    aos_status_t *s = NULL;

    aos_pool_create(&p, NULL);
    options = oss_request_options_create(p);
    init_sample_request_options(options, is_cname);
    aos_str_set(&bucket, BUCKET_NAME);
    aos_str_set(&object, OBJECT_NAME);
    headers = aos_table_make(p, 0);

    s = oss_head_object(options, &bucket, &object, headers, &resp_headers);
    
    if (NULL != s && 2 == s->code / 100) {
        printf("head object succeeded\n");
    } else {
        printf("head object failed\n");
    }

    aos_pool_destroy(p);
}
コード例 #6
0
static void oss_clean(const char *filename) {
    aos_pool_t *pool;
    oss_request_options_t *opts;
    aos_string_t bucket;
    aos_string_t key;
    aos_status_t *status;
    aos_table_t *resp_headers;

    aos_pool_create(&pool, NULL);

    opts = oss_request_options_create(pool);
    opts->config = oss_config_create(pool);
    aos_str_set(&opts->config->endpoint, SAMPLE_OSS_ENDPOINT);
    aos_str_set(&opts->config->access_key_id, SAMPLE_ACCESS_KEY_ID);
    aos_str_set(&opts->config->access_key_secret, SAMPLE_ACCESS_KEY_SECRET);
    opts->config->is_cname = 0; 
    opts->ctl = aos_http_controller_create(pool, 0);
    aos_str_set(&bucket, SAMPLE_BUCKET_NAME);
    aos_str_set(&key, filename);

    status = oss_delete_object(opts, &bucket, &key, &resp_headers);
    if (!aos_status_is_ok(status)) {
        aos_error_log("clean oss error. [code=%d, message=%s]", 
                      status->code, status->error_code);
        aos_error_log("example exit");
        aos_pool_destroy(pool);
        exit(-1);
    }

    aos_pool_destroy(pool);
}
コード例 #7
0
ファイル: oss_test_util.c プロジェクト: RDFS/aliyun-oss-c-sdk
void init_test_config(oss_config_t *config, int is_cname)
{
    aos_str_set(&config->endpoint, TEST_OSS_ENDPOINT);
    aos_str_set(&config->access_key_id, TEST_ACCESS_KEY_ID);
    aos_str_set(&config->access_key_secret, TEST_ACCESS_KEY_SECRET);
    config->is_cname = is_cname;
}
コード例 #8
0
ファイル: oss_xml.c プロジェクト: lixiaofly/oss
int oss_list_multipart_uploads_parse_from_body(aos_pool_t *p, aos_list_t *bc,
    aos_list_t *upload_list, aos_string_t *key_marker,
    aos_string_t *upload_id_marker, int *truncated)
{
    int res;
    xmlDocPtr doc;
    const char next_key_marker_xml_path[] = "/ListMultipartUploadsResult/NextKeyMarker";
    const char next_upload_id_marker_xml_path[] = "/ListMultipartUploadsResult/NextUploadIdMarker";
    const char truncated_xml_path[] = "/ListMultipartUploadsResult/IsTruncated";
    const char uploads_xml_path[] = "/ListMultipartUploadsResult/Upload";
    char *next_key_marker;
    char *next_upload_id_marker;

    res = get_xmldoc(bc, &doc);
    if (res == AOSE_OK) {
        next_key_marker = get_xmlnode_value(p, doc, next_key_marker_xml_path);
        if (next_key_marker) {
            aos_str_set(key_marker, next_key_marker);
        }

        next_upload_id_marker = get_xmlnode_value(p, doc, next_upload_id_marker_xml_path);
        if (next_upload_id_marker) {
            aos_str_set(upload_id_marker, next_upload_id_marker);
        }

        *truncated = get_truncated_from_xml(p, doc, truncated_xml_path);

        oss_list_multipart_uploads_contents_parse(p, doc, uploads_xml_path, upload_list);
        xmlFreeDoc(doc);
    }

    return res;
}
コード例 #9
0
ファイル: oss_test_util.c プロジェクト: lixiaofly/oss
void init_test_config(oss_config_t *config, int is_oss_domain)
{
    aos_str_set(&config->host, TEST_OSS_HOST);
    config->port = 80; 
    aos_str_set(&config->id, TEST_ACCESS_ID);
    aos_str_set(&config->key, TEST_ACCESS_KEY);
    config->is_oss_domain = is_oss_domain;
}
コード例 #10
0
void append_object_from_buffer()
{
    aos_pool_t *p = NULL;
    aos_string_t bucket;
    aos_string_t object;
    char *str = "test oss c sdk";
    aos_status_t *s = NULL;
    int is_cname = 0;
    int64_t position = 0;
    aos_table_t *headers1 = NULL;
    aos_table_t *headers2 = NULL;
    aos_table_t *resp_headers = NULL;
    oss_request_options_t *options = NULL;
    aos_list_t buffer;
    aos_buf_t *content = NULL;
    char *next_append_position = NULL;
    char *object_type = NULL;

    aos_pool_create(&p, NULL);
    options = oss_request_options_create(p);
    init_sample_request_options(options, is_cname);
    headers1 = aos_table_make(p, 0);
    aos_str_set(&bucket, BUCKET_NAME);
    aos_str_set(&object, OBJECT_NAME);
    s = oss_head_object(options, &bucket, &object, headers1, &resp_headers);
    if (aos_status_is_ok(s)) {
        object_type = (char*)(apr_table_get(resp_headers, OSS_OBJECT_TYPE));
        if (0 != strncmp(OSS_OBJECT_TYPE_APPENDABLE, object_type, 
                         strlen(OSS_OBJECT_TYPE_APPENDABLE))) 
        {
            printf("object[%s]'s type[%s] is not Appendable\n", OBJECT_NAME, object_type);
            aos_pool_destroy(p);
            return;
        }

        next_append_position = (char*)(apr_table_get(resp_headers, OSS_NEXT_APPEND_POSITION));
        position = atoi(next_append_position);
    }
        
    headers2 = aos_table_make(p, 0);
    aos_list_init(&buffer);
    content = aos_buf_pack(p, str, strlen(str));
    aos_list_add_tail(&content->node, &buffer);
    s = oss_append_object_from_buffer(options, &bucket, &object, 
            position, &buffer, headers2, &resp_headers);

    if (aos_status_is_ok(s))
    {
        printf("append object from buffer succeeded\n");
    } else {
        printf("append object from buffer failed\n");
    }

    aos_pool_destroy(p);
}
コード例 #11
0
ファイル: oss_util.c プロジェクト: kilowu/aliyun-oss-c-sdk
oss_lifecycle_rule_content_t *oss_create_lifecycle_rule_content(aos_pool_t *p)
{
    oss_lifecycle_rule_content_t *rule;
    rule = (oss_lifecycle_rule_content_t *)aos_pcalloc(
            p, sizeof(oss_lifecycle_rule_content_t));
    aos_str_set(&rule->id, "");
    aos_str_set(&rule->prefix, "");
    aos_str_set(&rule->status, "");
    aos_str_set(&rule->date, "");
    rule->days = INT_MAX;
    return rule;
}
コード例 #12
0
void append_object_from_file()
{
    aos_pool_t *p = NULL;
    aos_string_t bucket;
    aos_string_t object;
    int is_cname = 0;
    aos_table_t *headers1 = NULL;
    aos_table_t *headers2 = NULL;
    aos_table_t *resp_headers = NULL;
    oss_request_options_t *options = NULL;
    char *filename = __FILE__;
    aos_status_t *s = NULL;
    aos_string_t file;
    int64_t position = 0;
    char *next_append_position = NULL;
    char *object_type = NULL;

    aos_pool_create(&p, NULL);
    options = oss_request_options_create(p);
    init_sample_request_options(options, is_cname);
    headers1 = aos_table_make(options->pool, 0);
    headers2 = aos_table_make(options->pool, 0);
    aos_str_set(&bucket, BUCKET_NAME);
    aos_str_set(&object, OBJECT_NAME);
    aos_str_set(&file, filename);

    s = oss_head_object(options, &bucket, &object, headers1, &resp_headers);
    if(aos_status_is_ok(s)) {
        object_type = (char*)(apr_table_get(resp_headers, OSS_OBJECT_TYPE));
        if (0 != strncmp(OSS_OBJECT_TYPE_APPENDABLE, object_type, 
                         strlen(OSS_OBJECT_TYPE_APPENDABLE))) 
        {
            printf("object[%s]'s type[%s] is not Appendable\n", OBJECT_NAME, object_type);
            aos_pool_destroy(p);
            return;
        }
        
        next_append_position = (char*)(apr_table_get(resp_headers, OSS_NEXT_APPEND_POSITION));
        position = atoi(next_append_position);
    }

    s = oss_append_object_from_file(options, &bucket, &object, 
                                    position, &file, headers2, &resp_headers);

    if (aos_status_is_ok(s)) {
        printf("append object from file succeeded\n");
    } else {
        printf("append object from file failed\n");
    }    

    aos_pool_destroy(p);
}
コード例 #13
0
ファイル: oss_util.c プロジェクト: kilowu/aliyun-oss-c-sdk
oss_list_multipart_upload_params_t *oss_create_list_multipart_upload_params(aos_pool_t *p)
{
    oss_list_multipart_upload_params_t *params;
    params = (oss_list_multipart_upload_params_t *)aos_pcalloc(
            p, sizeof(oss_list_multipart_upload_params_t));
    aos_list_init(&params->upload_list);
    aos_str_set(&params->prefix, "");
    aos_str_set(&params->key_marker, "");
    aos_str_set(&params->upload_id_marker, "");
    aos_str_set(&params->delimiter, "");
    params->truncated = 1;
    params->max_ret = OSS_PER_RET_NUM;
    return params;
}
コード例 #14
0
ファイル: oss_util.c プロジェクト: kilowu/aliyun-oss-c-sdk
oss_list_object_params_t *oss_create_list_object_params(aos_pool_t *p)
{
    oss_list_object_params_t * params;
    params = (oss_list_object_params_t *)aos_pcalloc(
            p, sizeof(oss_list_object_params_t));
    aos_list_init(&params->object_list);
    aos_list_init(&params->common_prefix_list);
    aos_str_set(&params->prefix, "");
    aos_str_set(&params->marker, "");
    aos_str_set(&params->delimiter, "");
    params->truncated = 1;
    params->max_ret = OSS_PER_RET_NUM;
    return params;
}
コード例 #15
0
ファイル: oss_test_util.c プロジェクト: RDFS/aliyun-oss-c-sdk
char* gen_test_signed_url(const oss_request_options_t *options, 
                          const char *bucket_name,
                          const char *object_name, 
                          int64_t expires, 
                          aos_http_request_t *req)
{
    aos_string_t bucket;
    aos_string_t object;
    char *signed_url = NULL;

    aos_str_set(&bucket, bucket_name);
    aos_str_set(&object, object_name);
    signed_url = oss_gen_signed_url(options, &bucket, &object, expires, req);
    return signed_url;
}
コード例 #16
0
ファイル: oss_xml.c プロジェクト: lixiaofly/oss
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;
}
コード例 #17
0
ファイル: oss_xml.c プロジェクト: lixiaofly/oss
int oss_list_parts_parse_from_body(aos_pool_t *p, aos_list_t *bc,
    aos_list_t *part_list, aos_string_t *partnumber_marker, int *truncated)
{
    int res;
    xmlDocPtr doc;
    const char next_partnumber_marker_xml_path[] = "/ListPartsResult/NextPartNumberMarker";
    const char truncated_xml_path[] = "/ListPartsResult/IsTruncated";
    const char parts_xml_path[] = "/ListPartsResult/Part";
    char *next_partnumber_marker;

    res = get_xmldoc(bc, &doc);
    if (res == AOSE_OK) {
        next_partnumber_marker = get_xmlnode_value(p, doc, next_partnumber_marker_xml_path);
        if (next_partnumber_marker) {
            aos_str_set(partnumber_marker, next_partnumber_marker);
        }

        *truncated = get_truncated_from_xml(p, doc, truncated_xml_path);

        oss_list_parts_contents_parse(p, doc, parts_xml_path, part_list);

        xmlFreeDoc(doc);
    }

    return res;
}
コード例 #18
0
int oss_list_parts_parse_from_body(aos_pool_t *p, aos_list_t *bc,
    aos_list_t *part_list, aos_string_t *partnumber_marker, int *truncated)
{
    int res;
    mxml_node_t *root;
    const char next_partnumber_marker_xml_path[] = "NextPartNumberMarker";
    const char truncated_xml_path[] = "IsTruncated";
    const char parts_xml_path[] = "Part";
    char *next_partnumber_marker;

    res = get_xmldoc(bc, &root);
    if (res == AOSE_OK) {
        next_partnumber_marker = get_xmlnode_value(p, root, next_partnumber_marker_xml_path);
        if (next_partnumber_marker) {
            aos_str_set(partnumber_marker, next_partnumber_marker);
        }

        *truncated = get_truncated_from_xml(p, root, truncated_xml_path);

        oss_list_parts_contents_parse(p, root, parts_xml_path, part_list);

        mxmlDelete(root);
    }

    return res;
}
コード例 #19
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;
}
コード例 #20
0
ファイル: oss_xml.c プロジェクト: lixiaofly/oss
void oss_list_objects_owner_parse(aos_pool_t *p, xmlNodePtr xml_node, oss_list_object_content_t *content)
{
    xmlNodePtr owner_node;
    char *owner_id;
    char *owner_display_name;

    for (owner_node = xml_node->xmlChildrenNode; owner_node != NULL; owner_node = owner_node->next) {
        xmlChar *node_content = xmlNodeGetContent(owner_node);
        if (apr_strnatcasecmp((char *)owner_node->name, "ID") == 0) {
            owner_id = apr_pstrdup(p, (char *)node_content);
            aos_str_set(&content->owner_id, owner_id);
        } else if (apr_strnatcasecmp((char *)owner_node->name, "DisplayName") == 0) {
            owner_display_name = apr_pstrdup(p, (char *)node_content);
            aos_str_set(&content->owner_display_name, owner_display_name);
        }
        xmlFree(node_content);
    }
}
コード例 #21
0
void oss_list_objects_content_parse(aos_pool_t *p, mxml_node_t *xml_node, oss_list_object_content_t *content)
{
    char *key;
    char *last_modified;
    char *etag;
    char *size;
    char *node_content;
    mxml_node_t *node;

    node = mxmlFindElement(xml_node, xml_node, "Key", NULL, NULL, MXML_DESCEND);
    if (NULL != node) {
        node_content = node->child->value.opaque;
        key = apr_pstrdup(p, (char *)node_content);
        aos_str_set(&content->key, key);
    }

    node = mxmlFindElement(xml_node, xml_node, "LastModified", NULL, NULL, MXML_DESCEND);
    if (NULL != node) {
        node_content = node->child->value.opaque;
        last_modified = apr_pstrdup(p, (char *)node_content);
        aos_str_set(&content->last_modified, last_modified);
    }

    node = mxmlFindElement(xml_node, xml_node, "ETag", NULL, NULL, MXML_DESCEND);
    if (NULL != node) {
        node_content = node->child->value.opaque;
        etag = apr_pstrdup(p, (char *)node_content);
        aos_str_set(&content->etag, etag);
    }

    node = mxmlFindElement(xml_node, xml_node, "Size", NULL, NULL, MXML_DESCEND);
    if (NULL != node) {
        node_content = node->child->value.opaque;
        size = apr_pstrdup(p, (char *)node_content);
        aos_str_set(&content->size, size);
    }

    node = mxmlFindElement(xml_node, xml_node, "Owner", NULL, NULL, MXML_DESCEND);
    if (NULL != node) {
        oss_list_objects_owner_parse(p, node, content);
    }
}
コード例 #22
0
ファイル: oss_test_util.c プロジェクト: RDFS/aliyun-oss-c-sdk
void make_rand_string(aos_pool_t *p, int len, aos_string_t *data)
{
    char *str = NULL;
    int i = 0;
    str = (char *)aos_palloc(p, len + 1);
    for ( ; i < len; i++) {
        str[i] = 'a' + rand() % 32;
    }
    str[len] = '\0';
    aos_str_set(data, str);
}
コード例 #23
0
void delete_file(oss_media_file_t *file) {
    aos_pool_t *p;
    aos_string_t bucket;
    aos_string_t object;
    oss_request_options_t *options;
    aos_table_t *resp_headers;

    aos_pool_create(&p, NULL);
    options = oss_request_options_create(p);
    options->config = oss_config_create(options->pool);
    aos_str_set(&options->config->endpoint, file->endpoint);
    aos_str_set(&options->config->access_key_id, file->access_key_id);
    aos_str_set(&options->config->access_key_secret, file->access_key_secret);
    options->config->is_cname = file->is_cname;
    options->ctl = aos_http_controller_create(options->pool, 0);    
    aos_str_set(&bucket, file->bucket_name);
    aos_str_set(&object, file->object_key);

    oss_delete_object(options, &bucket, &object, &resp_headers);
}
コード例 #24
0
ファイル: oss_util.c プロジェクト: kilowu/aliyun-oss-c-sdk
oss_list_upload_part_params_t *oss_create_list_upload_part_params(aos_pool_t *p)
{
    oss_list_upload_part_params_t *params;
    params = (oss_list_upload_part_params_t *)aos_pcalloc(
            p, sizeof(oss_list_upload_part_params_t));
    aos_list_init(&params->part_list);
    aos_str_set(&params->part_number_marker, "");
    params->max_ret = OSS_PER_RET_NUM;
    params->truncated = 1;
    return params;
}
コード例 #25
0
void oss_list_objects_owner_parse(aos_pool_t *p, mxml_node_t *xml_node, oss_list_object_content_t *content)
{
    mxml_node_t *node;
    char *node_content;
    char *owner_id;
    char *owner_display_name;

    node = mxmlFindElement(xml_node, xml_node, "ID",NULL, NULL, MXML_DESCEND);
    if (NULL != node) {
        node_content = node->child->value.opaque;
        owner_id = apr_pstrdup(p, node_content);
        aos_str_set(&content->owner_id, owner_id);
    }

    node = mxmlFindElement(xml_node, xml_node, "DisplayName", NULL, NULL, MXML_DESCEND);
    if (NULL != node) {
        node_content = node->child->value.opaque;
        owner_display_name = apr_pstrdup(p, node_content);
        aos_str_set(&content->owner_display_name, owner_display_name);
    }
}
コード例 #26
0
ファイル: oss_test_util.c プロジェクト: RDFS/aliyun-oss-c-sdk
aos_status_t * create_test_bucket(const oss_request_options_t *options,
                                  const char *bucket_name, 
                                  oss_acl_e oss_acl)
{
    aos_string_t bucket;
    aos_table_t *resp_headers;
    aos_status_t * s;

    aos_str_set(&bucket, bucket_name);

    s = oss_create_bucket(options, &bucket, oss_acl, &resp_headers);
    return s;
}
コード例 #27
0
ファイル: oss_xml.c プロジェクト: lixiaofly/oss
void oss_list_objects_prefix_parse(aos_pool_t *p, xmlNodePtr prefix_node, oss_list_object_common_prefix_t *common_prefix)
{
    char *prefix;

    for (; prefix_node != NULL; prefix_node = prefix_node->next) {
        xmlChar *node_content = xmlNodeGetContent(prefix_node);
        if (apr_strnatcasecmp((char *)prefix_node->name, "Prefix") == 0) {
            prefix = apr_pstrdup(p, (char *)node_content);
            aos_str_set(&common_prefix->prefix, prefix);
        }
        xmlFree(node_content);
    }
}
コード例 #28
0
void oss_list_objects_prefix_parse(aos_pool_t *p, mxml_node_t *xml_node, oss_list_object_common_prefix_t *common_prefix)
{
    char *prefix;
    mxml_node_t *node;
    char *node_content;
    
    node = mxmlFindElement(xml_node, xml_node, "Prefix", NULL, NULL, MXML_DESCEND);
    if (NULL != node) {
        node_content = node->child->value.opaque;
        prefix = apr_pstrdup(p, (char *)node_content);
        aos_str_set(&common_prefix->prefix, prefix);
    }
}
コード例 #29
0
ファイル: oss_xml.c プロジェクト: lixiaofly/oss
void oss_list_multipart_uploads_content_parse(aos_pool_t *p, xmlNodePtr xml_node, 
    oss_list_multipart_upload_content_t *content)
{
    char *key;
    char *upload_id;
    char *initiated;

    while (xml_node) {
        xmlChar *node_content = xmlNodeGetContent(xml_node);
        if (apr_strnatcasecmp((char *)xml_node->name, "Key") == 0) {
            key = apr_pstrdup(p, (char *)node_content);
            aos_str_set(&content->key, key);
        } else if (apr_strnatcasecmp((char *)xml_node->name, "UploadId") == 0) {
            upload_id = apr_pstrdup(p, (char *)node_content);
            aos_str_set(&content->upload_id, upload_id);
        } else if (apr_strnatcasecmp((char *)xml_node->name, "Initiated") == 0) {
            initiated = apr_pstrdup(p, (char *)node_content);
            aos_str_set(&content->initiated, initiated);
        }
        xmlFree(node_content);
        xml_node = xml_node->next;
    } 
}
コード例 #30
0
void oss_list_parts_content_parse(aos_pool_t *p, mxml_node_t *xml_node, oss_list_part_content_t *content)
{
    char *part_number;
    char *last_modified;
    char *etag;
    char *size;
    char *node_content;
    mxml_node_t *node;

    node = mxmlFindElement(xml_node, xml_node, "PartNumber", NULL, NULL, MXML_DESCEND);
    if (NULL != node) {
        node_content = node->child->value.opaque;
        part_number = apr_pstrdup(p, (char *)node_content);
        aos_str_set(&content->part_number, part_number);
    }

    node = mxmlFindElement(xml_node, xml_node, "LastModified", NULL, NULL, MXML_DESCEND);
    if (NULL != node) {
        node_content = node->child->value.opaque;
        last_modified = apr_pstrdup(p, (char *)node_content);
        aos_str_set(&content->last_modified, last_modified);
    }

    node = mxmlFindElement(xml_node, xml_node, "ETag", NULL, NULL, MXML_DESCEND);
    if (NULL != node) {
        node_content = node->child->value.opaque;
        etag = apr_pstrdup(p, (char *)node_content);
        aos_str_set(&content->etag, etag);
    }

    node = mxmlFindElement(xml_node, xml_node, "Size", NULL, NULL, MXML_DESCEND);
    if (NULL != node) {
        node_content = node->child->value.opaque;
        size = apr_pstrdup(p, (char *)node_content);
        aos_str_set(&content->size, size);
    }
}