]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/lib/object-storage/urls.ts
Add test on AP hooks
[github/Chocobozzz/PeerTube.git] / server / lib / object-storage / urls.ts
CommitLineData
0305db28 1import { CONFIG } from '@server/initializers/config'
9ab330b9
C
2import { OBJECT_STORAGE_PROXY_PATHS, WEBSERVER } from '@server/initializers/constants'
3import { MVideoUUID } from '@server/types/models'
0305db28
JB
4import { BucketInfo, buildKey, getEndpointParsed } from './shared'
5
9ab330b9 6function getInternalUrl (config: BucketInfo, keyWithoutPrefix: string) {
0305db28
JB
7 return getBaseUrl(config) + buildKey(keyWithoutPrefix, config)
8}
9
9ab330b9
C
10// ---------------------------------------------------------------------------
11
0305db28
JB
12function 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
19function 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
9ab330b9
C
26// ---------------------------------------------------------------------------
27
28function getHLSPrivateFileUrl (video: MVideoUUID, filename: string) {
29 return WEBSERVER.URL + OBJECT_STORAGE_PROXY_PATHS.STREAMING_PLAYLISTS.PRIVATE_HLS + video.uuid + `/${filename}`
30}
31
32function getWebTorrentPrivateFileUrl (filename: string) {
33 return WEBSERVER.URL + OBJECT_STORAGE_PROXY_PATHS.PRIVATE_WEBSEED + filename
34}
35
36// ---------------------------------------------------------------------------
37
0305db28 38export {
9ab330b9
C
39 getInternalUrl,
40
0305db28 41 getWebTorrentPublicFileUrl,
9ab330b9
C
42 getHLSPublicFileUrl,
43
44 getHLSPrivateFileUrl,
45 getWebTorrentPrivateFileUrl,
46
47 replaceByBaseUrl
0305db28
JB
48}
49
50// ---------------------------------------------------------------------------
51
52function getBaseUrl (bucketInfo: BucketInfo, baseUrl?: string) {
53 if (baseUrl) return baseUrl
54
55 return `${getEndpointParsed().protocol}//${bucketInfo.BUCKET_NAME}.${getEndpointParsed().host}/`
56}
57
58const regex = new RegExp('https?://[^/]+')
59function replaceByBaseUrl (fileUrl: string, baseUrl: string) {
8059e050
C
60 if (!fileUrl) return fileUrl
61
0305db28
JB
62 return fileUrl.replace(regex, baseUrl)
63}