]>
git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/tests/fixtures/peertube-plugin-test/main.js
6d06ec17d1a8f3e7d3dc33d926999418d6fcac0a
1 async
function register ({ registerHook
, registerSetting
, settingsManager
, storageManager
, peertubeHelpers
}) {
3 'action:application.listening',
4 'action:notifier.notification.created',
6 'action:api.video.updated',
7 'action:api.video.deleted',
8 'action:api.video.uploaded',
9 'action:api.video.viewed',
11 'action:api.video-channel.created',
12 'action:api.video-channel.updated',
13 'action:api.video-channel.deleted',
15 'action:api.live-video.created',
17 'action:api.video-thread.created',
18 'action:api.video-comment-reply.created',
19 'action:api.video-comment.deleted',
21 'action:api.video-caption.created',
22 'action:api.video-caption.deleted',
24 'action:api.user.blocked',
25 'action:api.user.unblocked',
26 'action:api.user.registered',
27 'action:api.user.created',
28 'action:api.user.deleted',
29 'action:api.user.updated',
30 'action:api.user.oauth2-got-token',
32 'action:api.video-playlist-element.created'
35 for (const h
of actionHooks
) {
38 handler: () => peertubeHelpers
.logger
.debug('Run hook %s.', h
)
43 target: 'filter:api.videos.list.params',
44 handler: obj
=> addToCount(obj
)
48 target: 'filter:api.videos.list.result',
49 handler: obj
=> addToTotal(obj
)
53 target: 'filter:api.video-playlist.videos.list.params',
54 handler: obj
=> addToCount(obj
)
58 target: 'filter:api.video-playlist.videos.list.result',
59 handler: obj
=> addToTotal(obj
)
63 target: 'filter:api.accounts.videos.list.params',
64 handler: obj
=> addToCount(obj
)
68 target: 'filter:api.accounts.videos.list.result',
69 handler: obj
=> addToTotal(obj
, 2)
73 target: 'filter:api.video-channels.videos.list.params',
74 handler: obj
=> addToCount(obj
, 3)
78 target: 'filter:api.video-channels.videos.list.result',
79 handler: obj
=> addToTotal(obj
, 3)
83 target: 'filter:api.user.me.videos.list.params',
84 handler: obj
=> addToCount(obj
, 4)
88 target: 'filter:api.user.me.videos.list.result',
89 handler: obj
=> addToTotal(obj
, 4)
93 target: 'filter:api.user.me.subscription-videos.list.params',
94 handler: obj
=> addToCount(obj
)
98 target: 'filter:api.user.me.subscription-videos.list.result',
99 handler: obj
=> addToTotal(obj
, 4)
103 target: 'filter:api.video.get.result',
111 // ---------------------------------------------------------------------------
114 target: 'filter:api.video-channels.list.params',
115 handler: obj
=> addToCount(obj
, 1)
119 target: 'filter:api.video-channels.list.result',
120 handler: obj
=> addToTotal(obj
, 1)
124 target: 'filter:api.video-channel.get.result',
125 handler: channel
=> {
126 channel
.name
+= ' <3'
132 // ---------------------------------------------------------------------------
134 for (const hook
of [ 'filter:api.video.upload.accept.result', 'filter:api.live-video.create.accept.result' ]) {
137 handler: ({ accepted
}, { videoBody
, liveVideoBody
}) => {
138 if (!accepted
) return { accepted: false }
140 const name
= videoBody
144 if (name
.indexOf('bad word') !== -1) return { accepted: false, errorMessage: 'bad word' }
146 return { accepted: true }
152 target: 'filter:api.video.pre-import-url.accept.result',
153 handler: ({ accepted
}, { videoImportBody
}) => {
154 if (!accepted
) return { accepted: false }
155 if (videoImportBody
.targetUrl
.includes('bad')) return { accepted: false, errorMessage: 'bad target url' }
157 return { accepted: true }
162 target: 'filter:api.video.pre-import-torrent.accept.result',
163 handler: ({ accepted
}, { videoImportBody
}) => {
164 if (!accepted
) return { accepted: false }
165 if (videoImportBody
.name
.includes('bad torrent')) return { accepted: false, errorMessage: 'bad torrent' }
167 return { accepted: true }
172 target: 'filter:api.video.post-import-url.accept.result',
173 handler: ({ accepted
}, { video
}) => {
174 if (!accepted
) return { accepted: false }
175 if (video
.name
.includes('bad word')) return { accepted: false, errorMessage: 'bad word' }
177 return { accepted: true }
182 target: 'filter:api.video.post-import-torrent.accept.result',
183 handler: ({ accepted
}, { video
}) => {
184 if (!accepted
) return { accepted: false }
185 if (video
.name
.includes('bad word')) return { accepted: false, errorMessage: 'bad word' }
187 return { accepted: true }
191 // ---------------------------------------------------------------------------
194 target: 'filter:api.video-thread.create.accept.result',
195 handler: ({ accepted
}, { commentBody
}) => checkCommentBadWord(accepted
, commentBody
)
199 target: 'filter:api.video-comment-reply.create.accept.result',
200 handler: ({ accepted
}, { commentBody
}) => checkCommentBadWord(accepted
, commentBody
)
204 target: 'filter:activity-pub.remote-video-comment.create.accept.result',
205 handler: ({ accepted
}, { comment
}) => checkCommentBadWord(accepted
, comment
)
208 // ---------------------------------------------------------------------------
211 target: 'filter:activity-pub.activity.context.build.result',
212 handler: context
=> context
.concat([ 'https://example.com/new-context' ])
216 target: 'filter:activity-pub.video.json-ld.build.result',
217 handler: (jsonld
, { video
}) => ({ ...jsonld
, videoName: video
.name
})
220 // ---------------------------------------------------------------------------
223 target: 'filter:api.video-threads.list.params',
224 handler: obj
=> addToCount(obj
)
228 target: 'filter:api.video-threads.list.result',
229 handler: obj
=> addToTotal(obj
)
233 target: 'filter:api.video-thread-comments.list.result',
235 obj
.data
.forEach(c
=> c
.text
+= ' <3')
242 target: 'filter:video.auto-blacklist.result',
243 handler: (blacklisted
, { video
}) => {
244 if (blacklisted
) return true
245 if (video
.name
.includes('please blacklist me')) return true
253 target: 'filter:api.user.signup.allowed.result',
254 handler: (result
, params
) => {
255 if (params
&& params
.body
&& params
.body
.email
&& params
.body
.email
.includes('jma 1')) {
256 return { allowed: false, errorMessage: 'No jma 1' }
264 target: 'filter:api.user.request-signup.allowed.result',
265 handler: (result
, params
) => {
266 if (params
&& params
.body
&& params
.body
.email
&& params
.body
.email
.includes('jma 2')) {
267 return { allowed: false, errorMessage: 'No jma 2' }
276 target: 'filter:api.download.torrent.allowed.result',
277 handler: (result
, params
) => {
278 if (params
&& params
.downloadName
.includes('bad torrent')) {
279 return { allowed: false, errorMessage: 'Liu Bei' }
287 target: 'filter:api.download.video.allowed.result',
288 handler: async (result
, params
) => {
289 const loggedInUser
= await peertubeHelpers
.user
.getAuthUser(params
.res
)
290 if (loggedInUser
) return { allowed: true }
292 if (params
&& !params
.streamingPlaylist
&& params
.video
.name
.includes('bad file')) {
293 return { allowed: false, errorMessage: 'Cao Cao' }
296 if (params
&& params
.streamingPlaylist
&& params
.video
.name
.includes('bad playlist file')) {
297 return { allowed: false, errorMessage: 'Sun Jian' }
305 target: 'filter:html.embed.video.allowed.result',
306 handler: (result
, params
) => {
315 target: 'filter:html.embed.video-playlist.allowed.result',
316 handler: (result
, params
) => {
325 target: 'filter:api.server.stats.get.result',
326 handler: (result
) => {
327 return { ...result
, customStats: 14 }
332 target: 'filter:job-queue.process.params',
333 handler: (object
, context
) => {
334 if (context
.type
!== 'video-studio-edition') return object
336 object
.data
.tasks
= [
351 target: 'filter:transcoding.auto.resolutions-to-transcode.result',
352 handler: (object
, context
) => {
353 if (context
.video
.name
.includes('transcode-filter')) {
361 // Upload/import/live attributes
362 for (const target
of [
363 'filter:api.video.upload.video-attribute.result',
364 'filter:api.video.import-url.video-attribute.result',
365 'filter:api.video.import-torrent.video-attribute.result',
366 'filter:api.video.live.video-attribute.result'
370 handler: (result
) => {
371 return { ...result
, description: result
.description
+ ' - ' + target
}
377 const filterHooks
= [
378 'filter:api.search.videos.local.list.params',
379 'filter:api.search.videos.local.list.result',
380 'filter:api.search.videos.index.list.params',
381 'filter:api.search.videos.index.list.result',
382 'filter:api.search.video-channels.local.list.params',
383 'filter:api.search.video-channels.local.list.result',
384 'filter:api.search.video-channels.index.list.params',
385 'filter:api.search.video-channels.index.list.result',
386 'filter:api.search.video-playlists.local.list.params',
387 'filter:api.search.video-playlists.local.list.result',
388 'filter:api.search.video-playlists.index.list.params',
389 'filter:api.search.video-playlists.index.list.result',
391 'filter:api.overviews.videos.list.params',
392 'filter:api.overviews.videos.list.result',
394 'filter:job-queue.process.params',
395 'filter:job-queue.process.result'
398 for (const h
of filterHooks
) {
402 peertubeHelpers
.logger
.debug('Run hook %s.', h
)
411 async
function unregister () {
420 // ############################################################################
422 function addToCount (obj
, amount
= 1) {
423 return Object
.assign({}, obj
, { count: obj
.count
+ amount
})
426 function addToTotal (result
, amount
= 1) {
429 total: result
.total
+ amount
433 function checkCommentBadWord (accepted
, commentBody
) {
434 if (!accepted
) return { accepted: false }
435 if (commentBody
.text
.indexOf('bad word') !== -1) return { accepted: false, errorMessage: 'bad word '}
437 return { accepted: true }