in source/s3_list_objects.c [145:183]
static bool s_on_contents_node(struct aws_xml_parser *parser, struct aws_xml_node *node, void *user_data) {
struct fs_parser_wrapper *fs_wrapper = user_data;
struct aws_s3_object_info *fs_info = &fs_wrapper->fs_info;
/* for each Contents node, get the info from it and send it off as an object we've encountered */
struct aws_byte_cursor node_name;
aws_xml_node_get_name(node, &node_name);
if (aws_byte_cursor_eq_c_str_ignore_case(&node_name, "ETag")) {
return aws_xml_node_as_body(parser, node, &fs_info->e_tag) == AWS_OP_SUCCESS;
}
if (aws_byte_cursor_eq_c_str_ignore_case(&node_name, "Key")) {
return aws_xml_node_as_body(parser, node, &fs_info->key) == AWS_OP_SUCCESS;
}
if (aws_byte_cursor_eq_c_str_ignore_case(&node_name, "LastModified")) {
struct aws_byte_cursor date_cur;
if (aws_xml_node_as_body(parser, node, &date_cur) == AWS_OP_SUCCESS) {
aws_date_time_init_from_str_cursor(&fs_info->last_modified, &date_cur, AWS_DATE_FORMAT_ISO_8601);
return true;
}
return false;
}
if (aws_byte_cursor_eq_c_str_ignore_case(&node_name, "Size")) {
struct aws_byte_cursor size_cur;
if (aws_xml_node_as_body(parser, node, &size_cur) == AWS_OP_SUCCESS) {
struct aws_string *size_str = aws_string_new_from_cursor(fs_wrapper->allocator, &size_cur);
fs_info->size = strtoull((const char *)size_str->bytes, NULL, 10);
aws_string_destroy(size_str);
return true;
}
}
return true;
}