1 import { CONFIG } from '@server/initializers/config'
2 import { OBJECT_STORAGE_PROXY_PATHS, WEBSERVER } from '@server/initializers/constants'
3 import { MVideoUUID } from '@server/types/models'
4 import { BucketInfo, buildKey, getEndpointParsed } from './shared'
6 function getInternalUrl (config: BucketInfo, keyWithoutPrefix: string) {
7 return getBaseUrl(config) + buildKey(keyWithoutPrefix, config)
10 // ---------------------------------------------------------------------------
12 function getWebTorrentPublicFileUrl (fileUrl: string) {
13 const baseUrl = CONFIG.OBJECT_STORAGE.VIDEOS.BASE_URL
14 if (!baseUrl) return fileUrl
16 return replaceByBaseUrl(fileUrl, baseUrl)
19 function getHLSPublicFileUrl (fileUrl: string) {
20 const baseUrl = CONFIG.OBJECT_STORAGE.STREAMING_PLAYLISTS.BASE_URL
21 if (!baseUrl) return fileUrl
23 return replaceByBaseUrl(fileUrl, baseUrl)
26 // ---------------------------------------------------------------------------
28 function getHLSPrivateFileUrl (video: MVideoUUID, filename: string) {
29 return WEBSERVER.URL + OBJECT_STORAGE_PROXY_PATHS.STREAMING_PLAYLISTS.PRIVATE_HLS + video.uuid + `/${filename}`
32 function getWebTorrentPrivateFileUrl (filename: string) {
33 return WEBSERVER.URL + OBJECT_STORAGE_PROXY_PATHS.PRIVATE_WEBSEED + filename
36 // ---------------------------------------------------------------------------
41 getWebTorrentPublicFileUrl,
45 getWebTorrentPrivateFileUrl,
50 // ---------------------------------------------------------------------------
52 function getBaseUrl (bucketInfo: BucketInfo, baseUrl?: string) {
53 if (baseUrl) return baseUrl
55 return `${getEndpointParsed().protocol}//${bucketInfo.BUCKET_NAME}.${getEndpointParsed().host}/`
58 const regex = new RegExp('https?://[^/]+')
59 function replaceByBaseUrl (fileUrl: string, baseUrl: string) {
60 if (!fileUrl) return fileUrl
62 return fileUrl.replace(regex, baseUrl)