]>
Commit | Line | Data |
---|---|---|
1 | import { basename } from 'path' | |
2 | import { Segment } from 'p2p-media-loader-core' | |
3 | ||
4 | function segmentUrlBuilderFactory (baseUrls: string[]) { | |
5 | return function segmentBuilder (segment: Segment) { | |
6 | const max = baseUrls.length + 1 | |
7 | const i = getRandomInt(max) | |
8 | ||
9 | if (i === max - 1) return segment.url | |
10 | ||
11 | let newBaseUrl = baseUrls[i] | |
12 | let middlePart = newBaseUrl.endsWith('/') ? '' : '/' | |
13 | ||
14 | return newBaseUrl + middlePart + basename(segment.url) | |
15 | } | |
16 | } | |
17 | ||
18 | // --------------------------------------------------------------------------- | |
19 | ||
20 | export { | |
21 | segmentUrlBuilderFactory | |
22 | } | |
23 | ||
24 | // --------------------------------------------------------------------------- | |
25 | ||
26 | function getRandomInt (max: number) { | |
27 | return Math.floor(Math.random() * Math.floor(max)) | |
28 | } |