X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=shared%2Fmodels%2Fplugins%2Fserver-hook.model.ts;h=20f89b86d96b5915402cadd7898db65f8ae84dd1;hb=cf387740f2a52c5b846d04f3bb76344b064e6886;hp=a7f88f3c40f377ef9dc70c6881b4a0410488bdb9;hpb=6691c52280363fc42f7865230ebb3741f02fff23;p=github%2FChocobozzz%2FPeerTube.git diff --git a/shared/models/plugins/server-hook.model.ts b/shared/models/plugins/server-hook.model.ts index a7f88f3c4..20f89b86d 100644 --- a/shared/models/plugins/server-hook.model.ts +++ b/shared/models/plugins/server-hook.model.ts @@ -1,34 +1,84 @@ -export type ServerFilterHookName = - 'filter:api.videos.list.params' | - 'filter:api.videos.list.result' | - 'filter:api.video.get.result' | +// {hookType}:{api?}.{location}.{subLocation?}.{actionType}.{target} - 'filter:api.video.upload.accept.result' | - 'filter:api.video-thread.create.accept.result' | - 'filter:api.video-comment-reply.create.accept.result' | +export const serverFilterHookObject = { + // Filter params/result used to list videos for the REST API + // (used by the trending page, recently-added page, local page etc) + 'filter:api.videos.list.params': true, + 'filter:api.videos.list.result': true, + // Filter the result of the get function + // Used to get detailed video information (video watch page for example) + 'filter:api.video.get.result': true, - 'filter:api.video-threads.list.params' | - 'filter:api.video-threads.list.result' | + // Filter the result of the accept upload function + // If this function returns false then the upload is aborted with an error + 'filter:api.video.upload.accept.result': true, + // Filter the result of the accept comment (thread or reply) functions + // If the functions return false then the user cannot post its comment + 'filter:api.video-thread.create.accept.result': true, + 'filter:api.video-comment-reply.create.accept.result': true, - 'filter:api.video-thread-comments.list.params' | - 'filter:api.video-thread-comments.list.result' | + // Filter params/result used to list threads of a specific video + // (used by the video watch page) + 'filter:api.video-threads.list.params': true, + 'filter:api.video-threads.list.result': true, - 'filter:video.auto-blacklist.result' + // Filter params/result used to list replies of a specific thread + // (used by the video watch page when we click on the "View replies" button) + 'filter:api.video-thread-comments.list.params': true, + 'filter:api.video-thread-comments.list.result': true, -export type ServerActionHookName = - 'action:application.listening' | + // Filter result used to check if we need to auto blacklist a video + // (fired when a local or remote video is created or updated) + 'filter:video.auto-blacklist.result': true, - 'action:api.video.updated' | - 'action:api.video.deleted' | - 'action:api.video.uploaded' | - 'action:api.video.viewed' | + // Filter result used to check if a user can register on the instance + 'filter:api.user.signup.allowed.result': true +} + +export type ServerFilterHookName = keyof typeof serverFilterHookObject + +export const serverActionHookObject = { + // Fired when the application has been loaded and is listening HTTP requests + 'action:application.listening': true, + + // Fired when a local video is updated + 'action:api.video.updated': true, + // Fired when a local video is deleted + 'action:api.video.deleted': true, + // Fired when a local video is uploaded + 'action:api.video.uploaded': true, + // Fired when a local video is viewed + 'action:api.video.viewed': true, + + // Fired when a thread is created + 'action:api.video-thread.created': true, + // Fired when a reply to a thread is created + 'action:api.video-comment-reply.created': true, + // Fired when a comment (thread or reply) is deleted + 'action:api.video-comment.deleted': true, + + // Fired when a user is blocked (banned) + 'action:api.user.blocked': true, + // Fired when a user is unblocked (unbanned) + 'action:api.user.unblocked': true, + // Fired when a user registered on the instance + 'action:api.user.registered': true, + // Fired when an admin/moderator created a user + 'action:api.user.created': true, + // Fired when a user is removed by an admin/moderator + 'action:api.user.deleted': true, + // Fired when a user is updated by an admin/moderator + 'action:api.user.updated': true, + + // Fired when a user got a new oauth2 token + 'action:api.user.oauth2-got-token': true +} - 'action:api.video-thread.created' | - 'action:api.video-comment-reply.created' | - 'action:api.video-comment.deleted' +export type ServerActionHookName = keyof typeof serverActionHookObject -export type ServerHookName = ServerFilterHookName | ServerActionHookName +export const serverHookObject = Object.assign({}, serverFilterHookObject, serverActionHookObject) +export type ServerHookName = keyof typeof serverHookObject export interface ServerHook { - runHook (hookName: ServerHookName, params?: any) + runHook (hookName: ServerHookName, result?: T, params?: any): Promise }