in provider-utils/awscloudformation/cloudformation-templates/livestream-helpers/LambdaFunctions/psdemo-js-live-workflow_v0.4.0/lib/babelfish.js [270:332]
async createEndpoints() {
const promises = this.endpoints.map((endpoint) => {
let params;
switch (endpoint.toLowerCase()) {
case 'hls':
params = this.createHlsPackageParams();
break;
case 'dash':
params = this.createDashPackageParams();
break;
case 'mss':
params = this.createMssPackageParams();
break;
case 'cmaf':
params = this.createCmafPackageParams();
break;
default:
console.log(`${endpoint} NOT IMPL`);
params = undefined;
}
return (params !== undefined)
? this.babelfish.createOriginEndpoint(params).promise()
: undefined;
});
const responses = await Promise.all(promises);
/* even if package is not created, we still need to report it to CF */
const initSettings = {
HlsEndpoint: '',
DashEndpoint: '',
MssEndpoint: '',
CmafEndpoint: '',
};
const results = responses.filter(x => x).reduce((acc, cur) => {
const {
Url, CmafPackage, DashPackage, HlsPackage, MssPackage,
} = cur;
acc.DomainEndpoint = acc.DomainEndpoint || new Set();
acc.DomainEndpoint.add(URL.parse(Url).hostname);
if (HlsPackage) {
return Object.assign({}, acc, { HlsEndpoint: Url });
}
if (DashPackage) {
return Object.assign({}, acc, { DashEndpoint: Url });
}
if (MssPackage) {
return Object.assign({}, acc, { MssEndpoint: Url });
}
if (CmafPackage) {
return Object.assign({}, acc, { CmafEndpoint: CmafPackage.HlsManifests[0].Url });
}
return acc;
}, initSettings);
/* serialize DomainName array */
// results.DomainEndpoint = Array.from(results.DomainEndpoint).join(',');
/**
* CAUTION: AWS::CloudFront::Distribution could only take a single origin (string)
* If we would need to support multiple origins, we might need to go with CustomResource!
*/
const [DomainEndpoint] = Array.from(results.DomainEndpoint);
results.DomainEndpoint = DomainEndpoint;
return results;
}