static bool s_on_node_encountered_fn()

in source/credentials_provider_sts.c [220:270]


static bool s_on_node_encountered_fn(struct aws_xml_parser *parser, struct aws_xml_node *node, void *user_data) {

    struct aws_byte_cursor node_name;
    AWS_ZERO_STRUCT(node_name);

    if (aws_xml_node_get_name(node, &node_name)) {
        AWS_LOGF_ERROR(
            AWS_LS_AUTH_CREDENTIALS_PROVIDER,
            "(id=%p): While parsing credentials xml response for sts credentials provider, could not get xml node name "
            "for function s_on_node_encountered_fn.",
            user_data);
        return false;
    }

    if (aws_byte_cursor_eq_ignore_case(&node_name, &s_assume_role_root_name) ||
        aws_byte_cursor_eq_ignore_case(&node_name, &s_assume_role_result_name) ||
        aws_byte_cursor_eq_ignore_case(&node_name, &s_assume_role_credentials_name)) {
        return aws_xml_node_traverse(parser, node, s_on_node_encountered_fn, user_data);
    }

    struct sts_creds_provider_user_data *provider_user_data = user_data;
    struct aws_byte_cursor credential_data;
    AWS_ZERO_STRUCT(credential_data);
    if (aws_byte_cursor_eq_ignore_case(&node_name, &s_assume_role_access_key_id_name)) {
        aws_xml_node_as_body(parser, node, &credential_data);
        provider_user_data->access_key_id =
            aws_string_new_from_array(provider_user_data->allocator, credential_data.ptr, credential_data.len);

        if (provider_user_data->access_key_id) {
            AWS_LOGF_DEBUG(
                AWS_LS_AUTH_CREDENTIALS_PROVIDER,
                "(id=%p): Read AccessKeyId %s",
                (void *)provider_user_data->provider,
                aws_string_c_str(provider_user_data->access_key_id));
        }
    }

    if (aws_byte_cursor_eq_ignore_case(&node_name, &s_assume_role_secret_key_name)) {
        aws_xml_node_as_body(parser, node, &credential_data);
        provider_user_data->secret_access_key =
            aws_string_new_from_array(provider_user_data->allocator, credential_data.ptr, credential_data.len);
    }

    if (aws_byte_cursor_eq_ignore_case(&node_name, &s_assume_role_session_token_name)) {
        aws_xml_node_as_body(parser, node, &credential_data);
        provider_user_data->session_token =
            aws_string_new_from_array(provider_user_data->allocator, credential_data.ptr, credential_data.len);
    }

    return true;
}