'List all objects from the bucket with the give string prefix in name
:param bucket: bucket name
:type bucket: string
:param versions: if true, list all versions of the objects
:type versions: boolean
:param maxResults: max count of items to return in a single page of responses
:type maxResults: integer
:param prefix: prefix string which filters objects whose name begin with this prefix
:type prefix: string
:return: a stream of object names matching the filtering criteria'

def list(self, bucket, versions=None, maxResults=None, prefix=None):

    service = self.get_conn()
    ids = list()
    pageToken = None
    while True:
        response = service.objects().list(bucket=bucket, versions=versions, maxResults=maxResults, pageToken=pageToken, prefix=prefix).execute()
        if ('items' not in response):
            logging.info('No    items    found    for    prefix:{}'.format(prefix))
            break
        for item in response['items']:
            if (item and ('name' in item)):
                ids.append(item['name'])
        if ('nextPageToken' not in response):
            break
        pageToken = response['nextPageToken']
        if (not pageToken):
            break
    return ids
