public async publish()

in src/publishing/apimMediaPublisher.ts [115:176]


    public async publish(): Promise<void> {
        const query: Query<MediaContract> = Query.from<MediaContract>();
        let pagesOfResults = await this.mediaService.search(query);

        do {
            const tasks = [];
            const mediaContracts = pagesOfResults.value;

            for (const mediaContract of mediaContracts) {
                if (!mediaContract.permalink) {
                    this.logger.trackEvent(WellKnownEventTypes.Publishing, { message: `Skipping media with no permalink specified: "${mediaContract.fileName}".` });
                    continue;
                }

                const permalink = normalizePermalink(mediaContract.permalink);

                const isPermalinkValid = RegExps.permalink.test(permalink);

                if (!isPermalinkValid) {
                    this.logger.trackEvent(WellKnownEventTypes.Publishing, { message: `Skipping media "${mediaContract.fileName}" with invalid permalink: "${permalink}".` });
                    continue;
                }

                this.logger.trackEvent(WellKnownEventTypes.Publishing, { message: `Publishing media ${mediaContract.fileName}...` });

                const original: MediaVariantContract = {
                    blobKey: mediaContract.blobKey,
                    downloadUrl: mediaContract.downloadUrl,
                    mimeType: mediaContract.mimeType
                };

                if (!mediaContract.blobKey && !mediaContract.downloadUrl) {
                    this.logger.trackEvent(WellKnownEventTypes.Publishing, { message: `Skipping media with no blob key or download URL specified: ${mediaContract.fileName}.` });
                    continue;
                }

                tasks.push(() => this.renderMediaFile(permalink, original));

                if (mediaContract.variants) {
                    for (const variant of mediaContract.variants) {
                        if (!mediaContract.blobKey && !mediaContract.downloadUrl) {
                            this.logger.trackEvent(WellKnownEventTypes.Publishing, { message: `Skipping media variant with no blob key or download URL specified: ${mediaContract.fileName}.` });
                            continue;
                        }

                        const variantPermalink = MediaUtils.getPermalinkForMediaVariant(permalink, variant);
                        tasks.push(() => this.renderMediaFile(variantPermalink, variant));
                    }
                }
            }

            await parallel(tasks, maxParallelPublisingTasks);

            if (pagesOfResults.takeNext) {
                pagesOfResults = await pagesOfResults.takeNext();
            }
            else {
                pagesOfResults = null;
            }
        }
        while (pagesOfResults);
    }