void aos_curl_response_headers_parse(aos_pool_t *p, aos_table_t *headers, char *buffer, int len) { char *pos; aos_string_t str; aos_string_t key; aos_string_t value; str.data = buffer; str.len = len; aos_trip_space_and_cntrl(&str); pos = aos_strlchr(str.data, str.data + str.len, ':'); if (pos == NULL) { return; } key.data = str.data; key.len = pos - str.data; pos += 1; value.len = str.data + str.len - pos; value.data = pos; aos_strip_space(&value); apr_table_addn(headers, aos_pstrdup(p, &key), aos_pstrdup(p, &value)); }
void oss_get_object_uri(const oss_request_options_t *options, const aos_string_t *bucket, const aos_string_t *object, aos_http_request_t *req) { int32_t proto_len; const char *raw_endpoint_str; aos_string_t raw_endpoint; generate_proto(options, req); proto_len = strlen(req->proto); req->resource = apr_psprintf(options->pool, "%.*s/%.*s", bucket->len, bucket->data, object->len, object->data); raw_endpoint_str = aos_pstrdup(options->pool, &options->config->endpoint) + proto_len; raw_endpoint.len = options->config->endpoint.len - proto_len; raw_endpoint.data = options->config->endpoint.data + proto_len; if (options->config->is_cname) { req->host = apr_psprintf(options->pool, "%.*s", raw_endpoint.len, raw_endpoint.data); req->uri = object->data; } else if (is_valid_ip(raw_endpoint_str)) { req->host = apr_psprintf(options->pool, "%.*s", raw_endpoint.len, raw_endpoint.data); req->uri = apr_psprintf(options->pool, "%.*s/%.*s", bucket->len, bucket->data, object->len, object->data); } else { req->host = apr_psprintf(options->pool, "%.*s.%.*s", bucket->len, bucket->data, raw_endpoint.len, raw_endpoint.data); req->uri = object->data; } }
mxml_node_t *doc; mxml_node_t *root_node; oss_complete_part_content_t *content; doc = mxmlNewXML("1.0"); root_node = mxmlNewElement(doc, "CompleteMultipartUpload"); aos_list_for_each_entry(content, bc, node) { mxml_node_t *part_node = mxmlNewElement(root_node, "Part"); mxml_node_t *part_number_node = mxmlNewElement(part_node, "PartNumber"); mxmlNewText(part_number_node, 0, content->part_number.data); mxml_node_t *etag_node = mxmlNewElement(part_node, "ETag"); mxmlNewText(etag_node, 0, content->etag.data); } xml_buff = mxmlSaveAllocString(doc, MXML_NO_CALLBACK); aos_str_set(&xml_doc, xml_buff); complete_part_xml = aos_pstrdup(p, &xml_doc); free(xml_buff); mxmlDelete(doc); return complete_part_xml; } void build_complete_multipart_upload_body(aos_pool_t *p, aos_list_t *part_list, aos_list_t *body) { char *complete_multipart_upload_xml; aos_buf_t *b; complete_multipart_upload_xml = build_complete_multipart_upload_xml(p, part_list); aos_list_init(body); b = aos_buf_pack(p, complete_multipart_upload_xml, strlen(complete_multipart_upload_xml));