]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/lib/object-storage/urls.ts
Fix unregister default value
[github/Chocobozzz/PeerTube.git] / server / lib / object-storage / urls.ts
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'
5
6 function getInternalUrl (config: BucketInfo, keyWithoutPrefix: string) {
7 return getBaseUrl(config) + buildKey(keyWithoutPrefix, config)
8 }
9
10 // ---------------------------------------------------------------------------
11
12 function getWebTorrentPublicFileUrl (fileUrl: string) {
13 const baseUrl = CONFIG.OBJECT_STORAGE.VIDEOS.BASE_URL
14 if (!baseUrl) return fileUrl
15
16 return replaceByBaseUrl(fileUrl, baseUrl)
17 }
18
19 function getHLSPublicFileUrl (fileUrl: string) {
20 const baseUrl = CONFIG.OBJECT_STORAGE.STREAMING_PLAYLISTS.BASE_URL
21 if (!baseUrl) return fileUrl
22
23 return replaceByBaseUrl(fileUrl, baseUrl)
24 }
25
26 // ---------------------------------------------------------------------------
27
28 function getHLSPrivateFileUrl (video: MVideoUUID, filename: string) {
29 return WEBSERVER.URL + OBJECT_STORAGE_PROXY_PATHS.STREAMING_PLAYLISTS.PRIVATE_HLS + video.uuid + `/${filename}`
30 }
31
32 function getWebTorrentPrivateFileUrl (filename: string) {
33 return WEBSERVER.URL + OBJECT_STORAGE_PROXY_PATHS.PRIVATE_WEBSEED + filename
34 }
35
36 // ---------------------------------------------------------------------------
37
38 export {
39 getInternalUrl,
40
41 getWebTorrentPublicFileUrl,
42 getHLSPublicFileUrl,
43
44 getHLSPrivateFileUrl,
45 getWebTorrentPrivateFileUrl,
46
47 replaceByBaseUrl
48 }
49
50 // ---------------------------------------------------------------------------
51
52 function getBaseUrl (bucketInfo: BucketInfo, baseUrl?: string) {
53 if (baseUrl) return baseUrl
54
55 return `${getEndpointParsed().protocol}//${bucketInfo.BUCKET_NAME}.${getEndpointParsed().host}/`
56 }
57
58 const regex = new RegExp('https?://[^/]+')
59 function replaceByBaseUrl (fileUrl: string, baseUrl: string) {
60 if (!fileUrl) return fileUrl
61
62 return fileUrl.replace(regex, baseUrl)
63 }