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);
}