int aws_resource_name_init_from_cur()

in source/resource_name.c [16:45]


int aws_resource_name_init_from_cur(struct aws_resource_name *arn, const struct aws_byte_cursor *input) {
    struct aws_byte_cursor arn_parts[ARN_PARTS_COUNT];
    struct aws_array_list arn_part_list;
    aws_array_list_init_static(&arn_part_list, arn_parts, ARN_PARTS_COUNT, sizeof(struct aws_byte_cursor));
    if (aws_byte_cursor_split_on_char_n(input, ARN_DELIMETER_CHAR, ARN_SPLIT_COUNT, &arn_part_list)) {
        return aws_raise_error(AWS_ERROR_MALFORMED_INPUT_STRING);
    }

    struct aws_byte_cursor *arn_prefix;
    if (aws_array_list_get_at_ptr(&arn_part_list, (void **)&arn_prefix, 0) ||
        !aws_byte_cursor_eq_c_str(arn_prefix, "arn")) {
        return aws_raise_error(AWS_ERROR_MALFORMED_INPUT_STRING);
    }
    if (aws_array_list_get_at(&arn_part_list, &arn->partition, 1)) {
        return aws_raise_error(AWS_ERROR_MALFORMED_INPUT_STRING);
    }
    if (aws_array_list_get_at(&arn_part_list, &arn->service, 2)) {
        return aws_raise_error(AWS_ERROR_MALFORMED_INPUT_STRING);
    }
    if (aws_array_list_get_at(&arn_part_list, &arn->region, 3)) {
        return aws_raise_error(AWS_ERROR_MALFORMED_INPUT_STRING);
    }
    if (aws_array_list_get_at(&arn_part_list, &arn->account_id, 4) || aws_byte_cursor_eq_c_str(&arn->account_id, "")) {
        return aws_raise_error(AWS_ERROR_MALFORMED_INPUT_STRING);
    }
    if (aws_array_list_get_at(&arn_part_list, &arn->resource_id, 5)) {
        return aws_raise_error(AWS_ERROR_MALFORMED_INPUT_STRING);
    }
    return AWS_OP_SUCCESS;
}