export async function HandleFinishedTranscoding()

in src/handlers/shared.ts [97:131]


export async function HandleFinishedTranscoding(event: EventBridgeEvent<"MediaConvert Job State Change", any>) {
    const userMetaData = event.detail.userMetadata;
    // https://docs.aws.amazon.com/mediaconvert/latest/ug/user-metadata-tags.html
    const token = `${userMetaData.StepFunctionTaskToken1!}${userMetaData.StepFunctionTaskToken2!}${userMetaData.StepFunctionTaskToken3!}`;

    if (event.detail.status === "COMPLETE") {
        await StepFunctions.sendTaskSuccess({
            output: JSON.stringify({
                AssetId: userMetaData.AssetId,
                Bucket: userMetaData.Bucket,
                // tslint:disable-next-line:max-line-length
                // MediaConvert adds a suffix to the output to allow for multiple outputs in the same location (i.e. _720p, _1080p, ..)
                // We get the actual filename from the output details
                Key: event.detail.outputGroupDetails[0].outputDetails[0].outputFilePaths[0].replace(`s3://${userMetaData.Bucket}/`, ""),
                Type: "Video"
            }),
            taskToken: token
        }).promise();
    }

    if (event.detail.status === "STATUS_UPDATE" || event.detail.status === "PROGRESSING") {
        await StepFunctions.sendTaskHeartbeat({
            taskToken: token
        }).promise();
    }

    if (event.detail.status === "ERROR" || event.detail.status === "CANCELED") {
        await StepFunctions.sendTaskFailure({
            error: event.detail.errorMessage,
            taskToken: token
        }).promise();
    }

    return;
}