]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - client/src/assets/player/p2p-media-loader/segment-url-builder.ts
Merge branch 'master' into develop
[github/Chocobozzz/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 }