- logger.debug('Proxifying HLS file %s from object storage.', filename)
-
- try {
- const stream = await getHLSFileReadStream({
- playlist: playlist.withVideo(video),
- filename,
- rangeHeader: req.header('range')
- })
-
- const streamReplacer = filename.endsWith('.m3u8') && doReinjectVideoFileToken(req)
- ? new StreamReplacer(line => injectQueryToPlaylistUrls(line, buildReinjectVideoFileTokenQuery(req)))
- : new PassThrough()
-
- return pipeline(
- stream,
- streamReplacer,
- res,
- err => {
- if (!err) return
-
- handleObjectStorageFailure(res, err)
- }
- )
- } catch (err) {
- return handleObjectStorageFailure(res, err)
- }
-}
-
-function handleObjectStorageFailure (res: express.Response, err: Error) {
- if (err.name === 'NoSuchKey') {
- logger.debug('Could not find key in object storage to proxify private HLS video file.', { err })
- return res.sendStatus(HttpStatusCode.NOT_FOUND_404)
- }