def s3_recursion_compliant()

in src/python/detectors/missing_pagination/missing_pagination.py [0:0]


def s3_recursion_compliant(self, s3bucket_name, s3prefix_name, token=None):
    import boto3

    s3_client = boto3.client('s3')
    list_object_response = s3_client.list_objects_v2(
        Bucket=s3bucket_name,
        Prefix=s3prefix_name,
        ContinuationToken=token
    ) if token else s3_client.list_objects_v2(Bucket=s3bucket_name,
                                              Prefix=s3prefix_name)

    s3_deployment_folders = list_object_response['Contents']
    # Compliant: keeps requesting until no more requests are needed.
    if not list_object_response['IsTruncated']:
        return s3_deployment_folders

    next_response = self.s3_recursion_compliant(s3bucket_name, s3prefix_name,
                                                list_object_response
                                                ['NextContinuationToken'])
    s3_deployment_folders += next_response

    return s3_deployment_folders