@Override
    protected void enqueue() throws InterruptedException, IOException, TimeoutException {
        String fetcherName = getFetcherName();
        String emitterName = getEmitterName();
        long start = System.currentTimeMillis();
        int count = 0;
        HandlerConfig handlerConfig = getHandlerConfig();

        Page<Blob> blobs = null;
        if (StringUtils.isBlank(prefix)) {
            blobs = storage.list(bucket);
        } else {
            blobs = storage.list(bucket, Storage.BlobListOption.prefix(prefix));
        }

        for (Blob blob : blobs.iterateAll()) {
            //I couldn't find a better way to skip directories
            //calling blob.isDirectory() does not appear to work.  #usererror I'm sure.
            if (blob.getSize() == 0) {
                continue;
            }
            long elapsed = System.currentTimeMillis() - start;
            LOGGER.debug("adding ({}) {} in {} ms", count, blob.getName(), elapsed);
            //TODO -- allow user specified metadata as the "id"?
            ParseContext parseContext = new ParseContext();
            parseContext.set(HandlerConfig.class, handlerConfig);
            tryToAdd(new FetchEmitTuple(blob.getName(), new FetchKey(fetcherName, blob.getName()), new EmitKey(emitterName, blob.getName()), new Metadata(), parseContext,
                    getOnParseException()));
            count++;
        }
        long elapsed = System.currentTimeMillis() - start;
        LOGGER.info("finished enqueuing {} files in {} ms", count, elapsed);
    }
This initializes the gcs client.

@param params params to use for initialization
@throws TikaConfigException
tika-pipes/tika-pipes-iterators/tika-pipes-iterator-gcs/src/main/java/org/apache/tika/pipes/pipesiterator/gcs/GCSPipesIterator.java