hlx-url-rewriter
A transform stream to rewrite URLs in HLS playlists
Features
- Being used with other
hlx
objects, it provides a functionality to filter every playlists and rewrite the urls in them. - You can specify a custom function to parse/modify playlists or the default function will be used.
- The default function rewrites urls in accordance with the rules described below (See "default function")
Install
Usage
const createReadStream = ;const createUrlRewriter = ; // url-rewriterconst createTerminator = const src = ;const rewrite = ;const dest = ; // Rewrite all urlssrc;
API
The features are built on top of the Node's transform streams.
createUrlRewriter([rules, options])
Creates a new TransformStream
object.
params
Name | Type | Required | Default | Description |
---|---|---|---|---|
rewriteFunc | function | No | An internally defined default function | A function that takes an hls-parser object and modifies url strings included in the object. |
options | function | No | see below | An object preserving options |
default function
Pseudo code:
function defaultFunc(playlist, playlistUrl) {
for each url contained in the playlist {
if (url is not an absolute url) {
resolve url with playlistUrl to make it absolute
ex1: "http://example.com/path/to/file" + "../../path2/to/file" = "http://example.com/path2/to/file"
ex2: "file:///path/to/file" + "../../path2/to/file" = "file:///path2/to/file"
ex3: "http://example.com/path/to/file" + "/path2/to/file" = "http://example.com/path2/to/file"
ex4: "file:///path/to/file" + "/path2/to/file" = "file://{options.rootPath}/path/to/file"
}
}
if (url is not an absolute url || playlistUrl == '') {
return url
}
if (url and playlistUrl share the same protocol AND hostname) {
return a relative path from playlistUrl.pathname to url.pathname
}
if (playlistUrl is a file url) {
return a relative path from playlistUrl.pathname to "{options.rootPath}/{url.hostname}/{url.pathname}"
}
return a relative path from playlistUrl.pathname to "/{url.hostname}/{url.pathname}"
}
}
options
Name | Type | Default | Description |
---|---|---|---|
rootPath | string | "/" | This value will be used by the default function to convert a file url into a relative path. |
return value
An instance of TransformStream
.