def chunk_read(response, destination, console, chunk_size=8192, report_hook
    =None, updater=None):
    """
    Function that reads a chunk of a dowlnoad operation
    :param response: str
    :param destination: str
    :param console: ArtellaLauncher
    :param chunk_size: int
    :param report_hook: fn
    :param updater: ArtellaUpdater
    :return: int
    """
    with open(destination, 'ab') as dst_file:
        total_size = response.info().getheader('Content-Length').strip()
        total_size = int(total_size)
        bytes_so_far = 0
        while 1:
            chunk = response.read(chunk_size)
            dst_file.write(chunk)
            bytes_so_far += len(chunk)
            if not chunk:
                break
            if report_hook:
                report_hook(bytes_so_far=bytes_so_far, console=console,
                    total_size=total_size, updater=updater)
    dst_file.close()
    return bytes_so_far
