]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - shared/extra-utils/server/config.ts
Check live duration and size
[github/Chocobozzz/PeerTube.git] / shared / extra-utils / server / config.ts
1 import { makeDeleteRequest, makeGetRequest, makePutBodyRequest } from '../requests/requests'
2 import { CustomConfig } from '../../models/server/custom-config.model'
3 import { DeepPartial } from '@shared/core-utils'
4 import { merge } from 'lodash'
5
6 function getConfig (url: string) {
7 const path = '/api/v1/config'
8
9 return makeGetRequest({
10 url,
11 path,
12 statusCodeExpected: 200
13 })
14 }
15
16 function getAbout (url: string) {
17 const path = '/api/v1/config/about'
18
19 return makeGetRequest({
20 url,
21 path,
22 statusCodeExpected: 200
23 })
24 }
25
26 function getCustomConfig (url: string, token: string, statusCodeExpected = 200) {
27 const path = '/api/v1/config/custom'
28
29 return makeGetRequest({
30 url,
31 token,
32 path,
33 statusCodeExpected
34 })
35 }
36
37 function updateCustomConfig (url: string, token: string, newCustomConfig: CustomConfig, statusCodeExpected = 200) {
38 const path = '/api/v1/config/custom'
39
40 return makePutBodyRequest({
41 url,
42 token,
43 path,
44 fields: newCustomConfig,
45 statusCodeExpected
46 })
47 }
48
49 function updateCustomSubConfig (url: string, token: string, newConfig: DeepPartial<CustomConfig>) {
50 const updateParams: CustomConfig = {
51 instance: {
52 name: 'PeerTube updated',
53 shortDescription: 'my short description',
54 description: 'my super description',
55 terms: 'my super terms',
56 codeOfConduct: 'my super coc',
57
58 creationReason: 'my super creation reason',
59 moderationInformation: 'my super moderation information',
60 administrator: 'Kuja',
61 maintenanceLifetime: 'forever',
62 businessModel: 'my super business model',
63 hardwareInformation: '2vCore 3GB RAM',
64
65 languages: [ 'en', 'es' ],
66 categories: [ 1, 2 ],
67
68 defaultClientRoute: '/videos/recently-added',
69 isNSFW: true,
70 defaultNSFWPolicy: 'blur',
71 customizations: {
72 javascript: 'alert("coucou")',
73 css: 'body { background-color: red; }'
74 }
75 },
76 theme: {
77 default: 'default'
78 },
79 services: {
80 twitter: {
81 username: '@MySuperUsername',
82 whitelisted: true
83 }
84 },
85 cache: {
86 previews: {
87 size: 2
88 },
89 captions: {
90 size: 3
91 }
92 },
93 signup: {
94 enabled: false,
95 limit: 5,
96 requiresEmailVerification: false
97 },
98 admin: {
99 email: 'superadmin1@example.com'
100 },
101 contactForm: {
102 enabled: true
103 },
104 user: {
105 videoQuota: 5242881,
106 videoQuotaDaily: 318742
107 },
108 transcoding: {
109 enabled: true,
110 allowAdditionalExtensions: true,
111 allowAudioFiles: true,
112 threads: 1,
113 resolutions: {
114 '0p': false,
115 '240p': false,
116 '360p': true,
117 '480p': true,
118 '720p': false,
119 '1080p': false,
120 '2160p': false
121 },
122 webtorrent: {
123 enabled: true
124 },
125 hls: {
126 enabled: false
127 }
128 },
129 live: {
130 enabled: true,
131 allowReplay: false,
132 maxDuration: null,
133 transcoding: {
134 enabled: true,
135 threads: 4,
136 resolutions: {
137 '240p': true,
138 '360p': true,
139 '480p': true,
140 '720p': true,
141 '1080p': true,
142 '2160p': true
143 }
144 }
145 },
146 import: {
147 videos: {
148 http: {
149 enabled: false
150 },
151 torrent: {
152 enabled: false
153 }
154 }
155 },
156 autoBlacklist: {
157 videos: {
158 ofUsers: {
159 enabled: false
160 }
161 }
162 },
163 followers: {
164 instance: {
165 enabled: true,
166 manualApproval: false
167 }
168 },
169 followings: {
170 instance: {
171 autoFollowBack: {
172 enabled: false
173 },
174 autoFollowIndex: {
175 indexUrl: 'https://instances.joinpeertube.org/api/v1/instances/hosts',
176 enabled: false
177 }
178 }
179 },
180 broadcastMessage: {
181 enabled: true,
182 level: 'warning',
183 message: 'hello',
184 dismissable: true
185 },
186 search: {
187 remoteUri: {
188 users: true,
189 anonymous: true
190 },
191 searchIndex: {
192 enabled: true,
193 url: 'https://search.joinpeertube.org',
194 disableLocalSearch: true,
195 isDefaultSearch: true
196 }
197 }
198 }
199
200 merge(updateParams, newConfig)
201
202 return updateCustomConfig(url, token, updateParams)
203 }
204
205 function deleteCustomConfig (url: string, token: string, statusCodeExpected = 200) {
206 const path = '/api/v1/config/custom'
207
208 return makeDeleteRequest({
209 url,
210 token,
211 path,
212 statusCodeExpected
213 })
214 }
215
216 // ---------------------------------------------------------------------------
217
218 export {
219 getConfig,
220 getCustomConfig,
221 updateCustomConfig,
222 getAbout,
223 deleteCustomConfig,
224 updateCustomSubConfig
225 }