docs: def retrieve_keys(bucket, key, prefix='', postfix='', delim='/',
                        directories=False, recursive=False):
          """
          Retrieve keys from a bucket
          """
          if key and prefix:
              assert key.endswith(delim)
  
          key += prefix
          # check whether key is a directory
          if not key.endswith(delim) and key:
              # check for matching prefix
              if BotoClient.check_prefix(bucket, key + delim, delim=delim):
                  # found a directory
                  key += delim
  
          listdelim = delim if not recursive else None
          results = bucket.list(prefix=key, delimiter=listdelim)
          if postfix:
              func = lambda k_: BotoClient.filter_predicate(k_, postfix, inclusive=True)
              return filter(func, results)
          elif not directories:
              func = lambda k_: BotoClient.filter_predicate(k_, delim, inclusive=False)
              return filter(func, results)
          else:
              return results