in source/credentials_provider_sts_web_identity.c [868:909]
static int s_construct_endpoint(
struct aws_allocator *allocator,
struct aws_byte_buf *endpoint,
const struct aws_string *region,
const struct aws_string *service_name) {
if (!allocator || !endpoint || !region || !service_name) {
return AWS_ERROR_INVALID_ARGUMENT;
}
aws_byte_buf_clean_up(endpoint);
struct aws_byte_cursor service_cursor = aws_byte_cursor_from_string(service_name);
if (aws_byte_buf_init_copy_from_cursor(endpoint, allocator, service_cursor)) {
goto on_error;
}
if (aws_byte_buf_append_dynamic(endpoint, &s_dot_cursor)) {
goto on_error;
}
struct aws_byte_cursor region_cursor;
region_cursor = aws_byte_cursor_from_array(region->bytes, region->len);
if (aws_byte_buf_append_dynamic(endpoint, ®ion_cursor)) {
goto on_error;
}
if (aws_byte_buf_append_dynamic(endpoint, &s_amazonaws_cursor)) {
goto on_error;
}
if (aws_string_eq_c_str_ignore_case(region, "cn-north-1") ||
aws_string_eq_c_str_ignore_case(region, "cn-northwest-1")) {
if (aws_byte_buf_append_dynamic(endpoint, &s_cn_cursor)) {
goto on_error;
}
}
return AWS_OP_SUCCESS;
on_error:
aws_byte_buf_clean_up(endpoint);
return AWS_OP_ERR;
}