Merge branch 'release/v1.3.0' into develop
[oweals/peertube.git] / client / src / assets / player / p2p-media-loader / segment-url-builder.ts
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     const newBaseUrl = baseUrls[i]
12     const 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 }