server-hook.model.ts 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. // {hookType}:{api?}.{location}.{subLocation?}.{actionType}.{target}
  2. export const serverFilterHookObject = {
  3. // Filter params/result used to list videos for the REST API
  4. // (used by the trending page, recently-added page, local page etc)
  5. 'filter:api.videos.list.params': true,
  6. 'filter:api.videos.list.result': true,
  7. // Filter params/result used to list a video playlists videos
  8. // for the REST API
  9. 'filter:api.video-playlist.videos.list.params': true,
  10. 'filter:api.video-playlist.videos.list.result': true,
  11. // Filter params/result used to list account videos for the REST API
  12. 'filter:api.accounts.videos.list.params': true,
  13. 'filter:api.accounts.videos.list.result': true,
  14. // Filter params/result used to list channel videos for the REST API
  15. 'filter:api.video-channels.videos.list.params': true,
  16. 'filter:api.video-channels.videos.list.result': true,
  17. // Filter params/result used to list my user videos for the REST API
  18. 'filter:api.user.me.videos.list.params': true,
  19. 'filter:api.user.me.videos.list.result': true,
  20. // Filter params/result used to list overview videos for the REST API
  21. 'filter:api.overviews.videos.list.params': true,
  22. 'filter:api.overviews.videos.list.result': true,
  23. // Filter params/results to search videos/channels in the DB or on the remote index
  24. 'filter:api.search.videos.local.list.params': true,
  25. 'filter:api.search.videos.local.list.result': true,
  26. 'filter:api.search.videos.index.list.params': true,
  27. 'filter:api.search.videos.index.list.result': true,
  28. 'filter:api.search.video-channels.local.list.params': true,
  29. 'filter:api.search.video-channels.local.list.result': true,
  30. 'filter:api.search.video-channels.index.list.params': true,
  31. 'filter:api.search.video-channels.index.list.result': true,
  32. 'filter:api.search.video-playlists.local.list.params': true,
  33. 'filter:api.search.video-playlists.local.list.result': true,
  34. 'filter:api.search.video-playlists.index.list.params': true,
  35. 'filter:api.search.video-playlists.index.list.result': true,
  36. // Filter the result of the get function
  37. // Used to get detailed video information (video watch page for example)
  38. 'filter:api.video.get.result': true,
  39. // Filter params/results when listing video channels
  40. 'filter:api.video-channels.list.params': true,
  41. 'filter:api.video-channels.list.result': true,
  42. // Filter the result when getting a video channel
  43. 'filter:api.video-channel.get.result': true,
  44. // Filter the result of the accept upload/live, import via torrent/url functions
  45. // If this function returns false then the upload is aborted with an error
  46. 'filter:api.video.upload.accept.result': true,
  47. 'filter:api.live-video.create.accept.result': true,
  48. 'filter:api.video.pre-import-url.accept.result': true,
  49. 'filter:api.video.pre-import-torrent.accept.result': true,
  50. 'filter:api.video.post-import-url.accept.result': true,
  51. 'filter:api.video.post-import-torrent.accept.result': true,
  52. // Filter the result of the accept comment (thread or reply) functions
  53. // If the functions return false then the user cannot post its comment
  54. 'filter:api.video-thread.create.accept.result': true,
  55. 'filter:api.video-comment-reply.create.accept.result': true,
  56. // Filter attributes when creating video object
  57. 'filter:api.video.upload.video-attribute.result': true,
  58. 'filter:api.video.import-url.video-attribute.result': true,
  59. 'filter:api.video.import-torrent.video-attribute.result': true,
  60. 'filter:api.video.live.video-attribute.result': true,
  61. // Filter params/result used to list threads of a specific video
  62. // (used by the video watch page)
  63. 'filter:api.video-threads.list.params': true,
  64. 'filter:api.video-threads.list.result': true,
  65. // Filter params/result used to list replies of a specific thread
  66. // (used by the video watch page when we click on the "View replies" button)
  67. 'filter:api.video-thread-comments.list.params': true,
  68. 'filter:api.video-thread-comments.list.result': true,
  69. // Filter get stats result
  70. 'filter:api.server.stats.get.result': true,
  71. // Filter result used to check if we need to auto blacklist a video
  72. // (fired when a local or remote video is created or updated)
  73. 'filter:video.auto-blacklist.result': true,
  74. // Filter result used to check if a user can register on the instance
  75. 'filter:api.user.signup.allowed.result': true,
  76. // Filter result used to check if video/torrent download is allowed
  77. 'filter:api.download.video.allowed.result': true,
  78. 'filter:api.download.torrent.allowed.result': true,
  79. // Filter result to check if the embed is allowed for a particular request
  80. 'filter:html.embed.video.allowed.result': true,
  81. 'filter:html.embed.video-playlist.allowed.result': true,
  82. 'filter:job-queue.process.params': true,
  83. 'filter:job-queue.process.result': true,
  84. 'filter:transcoding.manual.resolutions-to-transcode.result': true,
  85. 'filter:transcoding.auto.resolutions-to-transcode.result': true
  86. }
  87. export type ServerFilterHookName = keyof typeof serverFilterHookObject
  88. export const serverActionHookObject = {
  89. // Fired when the application has been loaded and is listening HTTP requests
  90. 'action:application.listening': true,
  91. // Fired when a new notification is created
  92. 'action:notifier.notification.created': true,
  93. // API actions hooks give access to the original express `req` and `res` parameters
  94. // Fired when a local video is updated
  95. 'action:api.video.updated': true,
  96. // Fired when a local video is deleted
  97. 'action:api.video.deleted': true,
  98. // Fired when a local video is uploaded
  99. 'action:api.video.uploaded': true,
  100. // Fired when a local video is viewed
  101. 'action:api.video.viewed': true,
  102. // Fired when a video channel is created
  103. 'action:api.video-channel.created': true,
  104. // Fired when a video channel is updated
  105. 'action:api.video-channel.updated': true,
  106. // Fired when a video channel is deleted
  107. 'action:api.video-channel.deleted': true,
  108. // Fired when a live video is created
  109. 'action:api.live-video.created': true,
  110. // Fired when a thread is created
  111. 'action:api.video-thread.created': true,
  112. // Fired when a reply to a thread is created
  113. 'action:api.video-comment-reply.created': true,
  114. // Fired when a comment (thread or reply) is deleted
  115. 'action:api.video-comment.deleted': true,
  116. // Fired when a caption is created
  117. 'action:api.video-caption.created': true,
  118. // Fired when a caption is deleted
  119. 'action:api.video-caption.deleted': true,
  120. // Fired when a user is blocked (banned)
  121. 'action:api.user.blocked': true,
  122. // Fired when a user is unblocked (unbanned)
  123. 'action:api.user.unblocked': true,
  124. // Fired when a user registered on the instance
  125. 'action:api.user.registered': true,
  126. // Fired when an admin/moderator created a user
  127. 'action:api.user.created': true,
  128. // Fired when a user is removed by an admin/moderator
  129. 'action:api.user.deleted': true,
  130. // Fired when a user is updated by an admin/moderator
  131. 'action:api.user.updated': true,
  132. // Fired when a user got a new oauth2 token
  133. 'action:api.user.oauth2-got-token': true,
  134. // Fired when a video is added to a playlist
  135. 'action:api.video-playlist-element.created': true
  136. }
  137. export type ServerActionHookName = keyof typeof serverActionHookObject
  138. export const serverHookObject = Object.assign({}, serverFilterHookObject, serverActionHookObject)
  139. export type ServerHookName = keyof typeof serverHookObject
  140. export interface ServerHook {
  141. runHook <T> (hookName: ServerHookName, result?: T, params?: any): Promise<T>
  142. }