]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - shared/models/server/job.model.ts
Introduce experimental telemetry
[github/Chocobozzz/PeerTube.git] / shared / models / server / job.model.ts
index 8a69d11fa86148786872f7c83199a56e6ffe8536..4633ab7696fa2ec11ad486b948865856c62ae023 100644 (file)
@@ -1,4 +1,6 @@
 import { ContextType } from '../activitypub/context'
+import { VideoState } from '../videos'
+import { VideoStudioTaskCut } from '../videos/studio'
 import { VideoResolution } from '../videos/file/video-resolution.enum'
 import { SendEmailOptions } from './emailer.model'
 
@@ -7,6 +9,7 @@ export type JobState = 'active' | 'completed' | 'failed' | 'waiting' | 'delayed'
 export type JobType =
   | 'activitypub-http-unicast'
   | 'activitypub-http-broadcast'
+  | 'activitypub-http-broadcast-parallel'
   | 'activitypub-http-fetcher'
   | 'activitypub-cleaner'
   | 'activitypub-follow'
@@ -19,7 +22,9 @@ export type JobType =
   | 'video-redundancy'
   | 'video-live-ending'
   | 'actor-keys'
+  | 'manage-video-torrent'
   | 'move-to-object-storage'
+  | 'video-studio-edition'
 
 export interface Job {
   id: number
@@ -36,9 +41,9 @@ export interface Job {
 
 export type ActivitypubHttpBroadcastPayload = {
   uris: string[]
-  signatureActorId?: number
+  contextType: ContextType
   body: any
-  contextType?: ContextType
+  signatureActorId?: number
 }
 
 export type ActivitypubFollowPayload = {
@@ -49,7 +54,7 @@ export type ActivitypubFollowPayload = {
   assertIsChannel?: boolean
 }
 
-export type FetchType = 'activity' | 'video-likes' | 'video-dislikes' | 'video-shares' | 'video-comments' | 'account-playlists'
+export type FetchType = 'activity' | 'video-shares' | 'video-comments' | 'account-playlists'
 export type ActivitypubHttpFetcherPayload = {
   uri: string
   type: FetchType
@@ -58,9 +63,9 @@ export type ActivitypubHttpFetcherPayload = {
 
 export type ActivitypubHttpUnicastPayload = {
   uri: string
+  contextType: ContextType
   signatureActorId?: number
   body: object
-  contextType?: ContextType
 }
 
 export type RefreshPayload = {
@@ -94,6 +99,20 @@ export type VideoRedundancyPayload = {
   videoId: number
 }
 
+export type ManageVideoTorrentPayload =
+  {
+    action: 'create'
+    videoId: number
+    videoFileId: number
+  } | {
+    action: 'update-metadata'
+
+    videoId?: number
+    streamingPlaylistId?: number
+
+    videoFileId: number
+  }
+
 // Video transcoding payloads
 
 interface BaseTranscodingPayload {
@@ -113,11 +132,12 @@ export interface HLSTranscodingPayload extends BaseTranscodingPayload {
   isMaxQuality: boolean
 }
 
-export interface NewResolutionTranscodingPayload extends BaseTranscodingPayload {
+export interface NewWebTorrentResolutionTranscodingPayload extends BaseTranscodingPayload {
   type: 'new-resolution-to-webtorrent'
   resolution: VideoResolution
 
   hasAudio: boolean
+  createHLSIfNeeded: boolean
 
   isPortraitMode?: boolean
 }
@@ -125,6 +145,7 @@ export interface NewResolutionTranscodingPayload extends BaseTranscodingPayload
 export interface MergeAudioTranscodingPayload extends BaseTranscodingPayload {
   type: 'merge-audio-to-webtorrent'
   resolution: VideoResolution
+  createHLSIfNeeded: true
 }
 
 export interface OptimizeTranscodingPayload extends BaseTranscodingPayload {
@@ -133,12 +154,17 @@ export interface OptimizeTranscodingPayload extends BaseTranscodingPayload {
 
 export type VideoTranscodingPayload =
   HLSTranscodingPayload
-  | NewResolutionTranscodingPayload
+  | NewWebTorrentResolutionTranscodingPayload
   | OptimizeTranscodingPayload
   | MergeAudioTranscodingPayload
 
 export interface VideoLiveEndingPayload {
   videoId: number
+  publishedAt: string
+  liveSessionId: number
+  streamingPlaylistId: number
+
+  replayDirectory?: string
 }
 
 export interface ActorKeysPayload {
@@ -152,4 +178,42 @@ export interface DeleteResumableUploadMetaFilePayload {
 export interface MoveObjectStoragePayload {
   videoUUID: string
   isNewVideo: boolean
+  previousVideoState: VideoState
+}
+
+export type VideoStudioTaskCutPayload = VideoStudioTaskCut
+
+export type VideoStudioTaskIntroPayload = {
+  name: 'add-intro'
+
+  options: {
+    file: string
+  }
+}
+
+export type VideoStudioTaskOutroPayload = {
+  name: 'add-outro'
+
+  options: {
+    file: string
+  }
+}
+
+export type VideoStudioTaskWatermarkPayload = {
+  name: 'add-watermark'
+
+  options: {
+    file: string
+  }
+}
+
+export type VideoStudioTaskPayload =
+  VideoStudioTaskCutPayload |
+  VideoStudioTaskIntroPayload |
+  VideoStudioTaskOutroPayload |
+  VideoStudioTaskWatermarkPayload
+
+export interface VideoStudioEditionPayload {
+  videoUUID: string
+  tasks: VideoStudioTaskPayload[]
 }