]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/tests/fixtures/peertube-plugin-test/main.js
Merge branch 'release/4.1.0' into develop
[github/Chocobozzz/PeerTube.git] / server / tests / fixtures / peertube-plugin-test / main.js
1 async function register ({ registerHook, registerSetting, settingsManager, storageManager, peertubeHelpers }) {
2 const actionHooks = [
3 'action:application.listening',
4
5 'action:api.video.updated',
6 'action:api.video.deleted',
7 'action:api.video.uploaded',
8 'action:api.video.viewed',
9
10 'action:api.live-video.created',
11
12 'action:api.video-thread.created',
13 'action:api.video-comment-reply.created',
14 'action:api.video-comment.deleted',
15
16 'action:api.video-caption.created',
17 'action:api.video-caption.deleted',
18
19 'action:api.user.blocked',
20 'action:api.user.unblocked',
21 'action:api.user.registered',
22 'action:api.user.created',
23 'action:api.user.deleted',
24 'action:api.user.updated',
25 'action:api.user.oauth2-got-token',
26
27 'action:api.video-playlist-element.created'
28 ]
29
30 for (const h of actionHooks) {
31 registerHook({
32 target: h,
33 handler: () => peertubeHelpers.logger.debug('Run hook %s.', h)
34 })
35 }
36
37 registerHook({
38 target: 'filter:api.videos.list.params',
39 handler: obj => addToCount(obj)
40 })
41
42 registerHook({
43 target: 'filter:api.videos.list.result',
44 handler: obj => addToTotal(obj)
45 })
46
47 registerHook({
48 target: 'filter:api.video-playlist.videos.list.params',
49 handler: obj => addToCount(obj)
50 })
51
52 registerHook({
53 target: 'filter:api.video-playlist.videos.list.result',
54 handler: obj => addToTotal(obj)
55 })
56
57 registerHook({
58 target: 'filter:api.accounts.videos.list.params',
59 handler: obj => addToCount(obj)
60 })
61
62 registerHook({
63 target: 'filter:api.accounts.videos.list.result',
64 handler: obj => addToTotal(obj, 2)
65 })
66
67 registerHook({
68 target: 'filter:api.video-channels.videos.list.params',
69 handler: obj => addToCount(obj, 3)
70 })
71
72 registerHook({
73 target: 'filter:api.video-channels.videos.list.result',
74 handler: obj => addToTotal(obj, 3)
75 })
76
77 registerHook({
78 target: 'filter:api.user.me.videos.list.params',
79 handler: obj => addToCount(obj, 4)
80 })
81
82 registerHook({
83 target: 'filter:api.user.me.videos.list.result',
84 handler: obj => addToTotal(obj, 4)
85 })
86
87 registerHook({
88 target: 'filter:api.video.get.result',
89 handler: video => {
90 video.name += ' <3'
91
92 return video
93 }
94 })
95
96 for (const hook of [ 'filter:api.video.upload.accept.result', 'filter:api.live-video.create.accept.result' ]) {
97 registerHook({
98 target: hook,
99 handler: ({ accepted }, { videoBody, liveVideoBody }) => {
100 if (!accepted) return { accepted: false }
101
102 const name = videoBody
103 ? videoBody.name
104 : liveVideoBody.name
105
106 if (name.indexOf('bad word') !== -1) return { accepted: false, errorMessage: 'bad word' }
107
108 return { accepted: true }
109 }
110 })
111 }
112
113 registerHook({
114 target: 'filter:api.video.pre-import-url.accept.result',
115 handler: ({ accepted }, { videoImportBody }) => {
116 if (!accepted) return { accepted: false }
117 if (videoImportBody.targetUrl.includes('bad')) return { accepted: false, errorMessage: 'bad target url' }
118
119 return { accepted: true }
120 }
121 })
122
123 registerHook({
124 target: 'filter:api.video.pre-import-torrent.accept.result',
125 handler: ({ accepted }, { videoImportBody }) => {
126 if (!accepted) return { accepted: false }
127 if (videoImportBody.name.includes('bad torrent')) return { accepted: false, errorMessage: 'bad torrent' }
128
129 return { accepted: true }
130 }
131 })
132
133 registerHook({
134 target: 'filter:api.video.post-import-url.accept.result',
135 handler: ({ accepted }, { video }) => {
136 if (!accepted) return { accepted: false }
137 if (video.name.includes('bad word')) return { accepted: false, errorMessage: 'bad word' }
138
139 return { accepted: true }
140 }
141 })
142
143 registerHook({
144 target: 'filter:api.video.post-import-torrent.accept.result',
145 handler: ({ accepted }, { video }) => {
146 if (!accepted) return { accepted: false }
147 if (video.name.includes('bad word')) return { accepted: false, errorMessage: 'bad word' }
148
149 return { accepted: true }
150 }
151 })
152
153 registerHook({
154 target: 'filter:api.video-thread.create.accept.result',
155 handler: ({ accepted }, { commentBody }) => checkCommentBadWord(accepted, commentBody)
156 })
157
158 registerHook({
159 target: 'filter:api.video-comment-reply.create.accept.result',
160 handler: ({ accepted }, { commentBody }) => checkCommentBadWord(accepted, commentBody)
161 })
162
163 registerHook({
164 target: 'filter:api.video-threads.list.params',
165 handler: obj => addToCount(obj)
166 })
167
168 registerHook({
169 target: 'filter:api.video-threads.list.result',
170 handler: obj => addToTotal(obj)
171 })
172
173 registerHook({
174 target: 'filter:api.video-thread-comments.list.result',
175 handler: obj => {
176 obj.data.forEach(c => c.text += ' <3')
177
178 return obj
179 }
180 })
181
182 registerHook({
183 target: 'filter:video.auto-blacklist.result',
184 handler: (blacklisted, { video }) => {
185 if (blacklisted) return true
186 if (video.name.includes('please blacklist me')) return true
187
188 return false
189 }
190 })
191
192 registerHook({
193 target: 'filter:api.user.signup.allowed.result',
194 handler: (result, params) => {
195 if (params && params.body.email.includes('jma')) {
196 return { allowed: false, errorMessage: 'No jma' }
197 }
198
199 return result
200 }
201 })
202
203 registerHook({
204 target: 'filter:api.download.torrent.allowed.result',
205 handler: (result, params) => {
206 if (params && params.downloadName.includes('bad torrent')) {
207 return { allowed: false, errorMessage: 'Liu Bei' }
208 }
209
210 return result
211 }
212 })
213
214 registerHook({
215 target: 'filter:api.download.video.allowed.result',
216 handler: (result, params) => {
217 if (params && !params.streamingPlaylist && params.video.name.includes('bad file')) {
218 return { allowed: false, errorMessage: 'Cao Cao' }
219 }
220
221 if (params && params.streamingPlaylist && params.video.name.includes('bad playlist file')) {
222 return { allowed: false, errorMessage: 'Sun Jian' }
223 }
224
225 return result
226 }
227 })
228
229 registerHook({
230 target: 'filter:html.embed.video.allowed.result',
231 handler: (result, params) => {
232 return {
233 allowed: false,
234 html: 'Lu Bu'
235 }
236 }
237 })
238
239 registerHook({
240 target: 'filter:html.embed.video-playlist.allowed.result',
241 handler: (result, params) => {
242 return {
243 allowed: false,
244 html: 'Diao Chan'
245 }
246 }
247 })
248
249 registerHook({
250 target: 'filter:api.server.stats.get.result',
251 handler: (result) => {
252 return { ...result, customStats: 14 }
253 }
254 })
255
256 // Upload/import/live attributes
257 for (const target of [
258 'filter:api.video.upload.video-attribute.result',
259 'filter:api.video.import-url.video-attribute.result',
260 'filter:api.video.import-torrent.video-attribute.result',
261 'filter:api.video.live.video-attribute.result'
262 ]) {
263 registerHook({
264 target,
265 handler: (result) => {
266 return { ...result, description: result.description + ' - ' + target }
267 }
268 })
269 }
270
271 {
272 const filterHooks = [
273 'filter:api.search.videos.local.list.params',
274 'filter:api.search.videos.local.list.result',
275 'filter:api.search.videos.index.list.params',
276 'filter:api.search.videos.index.list.result',
277 'filter:api.search.video-channels.local.list.params',
278 'filter:api.search.video-channels.local.list.result',
279 'filter:api.search.video-channels.index.list.params',
280 'filter:api.search.video-channels.index.list.result',
281 'filter:api.search.video-playlists.local.list.params',
282 'filter:api.search.video-playlists.local.list.result',
283 'filter:api.search.video-playlists.index.list.params',
284 'filter:api.search.video-playlists.index.list.result',
285
286 'filter:api.overviews.videos.list.params',
287 'filter:api.overviews.videos.list.result'
288 ]
289
290 for (const h of filterHooks) {
291 registerHook({
292 target: h,
293 handler: (obj) => {
294 peertubeHelpers.logger.debug('Run hook %s.', h)
295
296 return obj
297 }
298 })
299 }
300 }
301 }
302
303 async function unregister () {
304 return
305 }
306
307 module.exports = {
308 register,
309 unregister
310 }
311
312 // ############################################################################
313
314 function addToCount (obj, amount = 1) {
315 return Object.assign({}, obj, { count: obj.count + amount })
316 }
317
318 function addToTotal (result, amount = 1) {
319 return {
320 data: result.data,
321 total: result.total + amount
322 }
323 }
324
325 function checkCommentBadWord (accepted, commentBody) {
326 if (!accepted) return { accepted: false }
327 if (commentBody.text.indexOf('bad word') !== -1) return { accepted: false, errorMessage: 'bad word '}
328
329 return { accepted: true }
330 }