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(¶ms->part_list); aos_str_set(¶ms->part_number_marker, ""); params->max_ret = OSS_PER_RET_NUM; params->truncated = 1; return params; }
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; }
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(¶ms->upload_list); aos_str_set(¶ms->prefix, ""); aos_str_set(¶ms->key_marker, ""); aos_str_set(¶ms->upload_id_marker, ""); aos_str_set(¶ms->delimiter, ""); params->truncated = 1; params->max_ret = OSS_PER_RET_NUM; return params; }
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(¶ms->object_list); aos_list_init(¶ms->common_prefix_list); aos_str_set(¶ms->prefix, ""); aos_str_set(¶ms->marker, ""); aos_str_set(¶ms->delimiter, ""); params->truncated = 1; params->max_ret = OSS_PER_RET_NUM; return params; }
oss_request_options_t *oss_request_options_create(aos_pool_t *p) { int s; oss_request_options_t *options; if(p == NULL) { if ((s = aos_pool_create(&p, NULL)) != APR_SUCCESS) { aos_fatal_log("aos_pool_create failure."); return NULL; } } options = (oss_request_options_t *)aos_pcalloc(p, sizeof(oss_request_options_t)); options->pool = p; return options; }
aos_http_transport_t *aos_curl_http_transport_create(aos_pool_t *p) { aos_func_u func; aos_curl_http_transport_t *t; t = (aos_curl_http_transport_t *)aos_pcalloc(p, sizeof(aos_curl_http_transport_t)); t->pool = p; t->options = aos_default_http_transport_options; t->cleanup = aos_fstack_create(p, 5); func.func1 = (aos_func1_pt)aos_transport_cleanup; aos_fstack_push(t->cleanup, t, func, 1); t->curl = aos_request_get(); func.func1 = (aos_func1_pt)request_release; aos_fstack_push(t->cleanup, t->curl, func, 1); t->header_callback = aos_curl_default_header_callback; t->read_callback = aos_curl_default_read_callback; t->write_callback = aos_curl_default_write_callback; return (aos_http_transport_t *)t; }
aos_status_t *log_post_logs_with_sts_token(aos_pool_t *p, const char *endpoint, const char * accesskeyId, const char *accessKey, const char *stsToken, const char *project, const char *logstore, cJSON *root) { aos_string_t project_name, logstore_name; aos_table_t *headers = NULL; aos_table_t *resp_headers = NULL; log_request_options_t *options = NULL; aos_list_t buffer; unsigned char *md5 = NULL; char *buf = NULL; int64_t buf_len; char *b64_value = NULL; aos_buf_t *content = NULL; aos_status_t *s = NULL; options = log_request_options_create(p); options->config = log_config_create(options->pool); aos_str_set(&(options->config->endpoint), endpoint); aos_str_set(&(options->config->access_key_id), accesskeyId); aos_str_set(&(options->config->access_key_secret), accessKey); if(stsToken != NULL) { aos_str_set(&(options->config->sts_token), stsToken); } options->ctl = aos_http_controller_create(options->pool, 0); headers = aos_table_make(p, 5); apr_table_set(headers, LOG_API_VERSION, "0.6.0"); apr_table_set(headers, LOG_COMPRESS_TYPE, "lz4"); apr_table_set(headers, LOG_SIGNATURE_METHOD, "hmac-sha1"); apr_table_set(headers, LOG_CONTENT_TYPE, "application/json"); aos_str_set(&project_name, project); aos_str_set(&logstore_name, logstore); aos_list_init(&buffer); char *body = cJSON_PrintUnformatted(root); if(body == NULL) { s = aos_status_create(options->pool); aos_status_set(s, 400, AOS_CLIENT_ERROR_CODE, "fail to format cJSON data"); return s; } int org_body_size = strlen(body); apr_table_set(headers, LOG_BODY_RAW_SIZE, apr_itoa(options->pool, org_body_size)); int compress_bound = LZ4_compressBound(org_body_size); char *compress_data = aos_pcalloc(options->pool, compress_bound); int compressed_size = LZ4_compress(body, compress_data, org_body_size); if(compressed_size <= 0) { s = aos_status_create(options->pool); aos_status_set(s, 400, AOS_CLIENT_ERROR_CODE, "fail to compress json data"); return s; } content = aos_buf_pack(options->pool, compress_data, compressed_size); aos_list_add_tail(&content->node, &buffer); //add Content-MD5 buf_len = aos_buf_list_len(&buffer); buf = aos_buf_list_content(options->pool, &buffer); md5 = aos_md5(options->pool, buf, (apr_size_t)buf_len); b64_value = aos_pcalloc(options->pool, 50); int loop = 0; for(; loop < 16; ++loop) { unsigned char a = ((*md5)>>4) & 0xF, b = (*md5) & 0xF; b64_value[loop<<1] = a > 9 ? (a - 10 + 'A') : (a + '0'); b64_value[(loop<<1)|1] = b > 9 ? (b - 10 + 'A') : (b + '0'); ++md5; } b64_value[loop<<1] = '\0'; apr_table_set(headers, LOG_CONTENT_MD5, b64_value); s = log_post_logs_from_buffer(options, &project_name, &logstore_name, &buffer, headers, &resp_headers); free(body); return s; }
oss_object_key_t *oss_create_oss_object_key(aos_pool_t *p) { return (oss_object_key_t *)aos_pcalloc(p, sizeof(oss_object_key_t)); }
oss_upload_file_t *oss_create_upload_file(aos_pool_t *p) { return (oss_upload_file_t *)aos_pcalloc(p, sizeof(oss_upload_file_t)); }
oss_upload_part_copy_params_t *oss_create_upload_part_copy_params(aos_pool_t *p) { return (oss_upload_part_copy_params_t *)aos_pcalloc( p, sizeof(oss_upload_part_copy_params_t)); }
oss_config_t *oss_config_create(aos_pool_t *p) { return (oss_config_t *)aos_pcalloc(p, sizeof(oss_config_t)); }