X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=shared%2Fmodels%2Fserver%2Fjob.model.ts;h=4ab249e0b86eaeb16d88cbba129f2d062869fffb;hb=37a44fc915eef2140e22ceb96aba6b6eb2509007;hp=85bc9541b673eda5eddec677396a917e25c7bf45;hpb=04b8c3fba614efc3827f583096c78b08cb668470;p=github%2FChocobozzz%2FPeerTube.git diff --git a/shared/models/server/job.model.ts b/shared/models/server/job.model.ts index 85bc9541b..4ab249e0b 100644 --- a/shared/models/server/job.model.ts +++ b/shared/models/server/job.model.ts @@ -1,23 +1,138 @@ -export type JobState = 'active' | 'completed' | 'failed' | 'waiting' | 'delayed' - -export type JobType = 'activitypub-http-unicast' | - 'activitypub-http-broadcast' | - 'activitypub-http-fetcher' | - 'activitypub-follow' | - 'video-file-import' | - 'video-file' | - 'email' | - 'video-import' | - 'videos-views' | - 'activitypub-refresher' +import { ContextType } from '../activitypub/context' +import { VideoResolution } from '../videos/video-resolution.enum' +import { SendEmailOptions } from './emailer.model' + +export type JobState = 'active' | 'completed' | 'failed' | 'waiting' | 'delayed' | 'paused' + +export type JobType = + | 'activitypub-http-unicast' + | 'activitypub-http-broadcast' + | 'activitypub-http-fetcher' + | 'activitypub-cleaner' + | 'activitypub-follow' + | 'video-file-import' + | 'video-transcoding' + | 'email' + | 'video-import' + | 'videos-views' + | 'activitypub-refresher' + | 'video-redundancy' + | 'video-live-ending' + | 'actor-keys' export interface Job { id: number state: JobState type: JobType - data: any, - error: any, - createdAt: Date - finishedOn: Date - processedOn: Date + data: any + priority: number + progress: number + error: any + createdAt: Date | string + finishedOn: Date | string + processedOn: Date | string +} + +export type ActivitypubHttpBroadcastPayload = { + uris: string[] + signatureActorId?: number + body: any + contextType?: ContextType +} + +export type ActivitypubFollowPayload = { + followerActorId: number + name: string + host: string + isAutoFollow?: boolean + assertIsChannel?: boolean +} + +export type FetchType = 'activity' | 'video-likes' | 'video-dislikes' | 'video-shares' | 'video-comments' | 'account-playlists' +export type ActivitypubHttpFetcherPayload = { + uri: string + type: FetchType + videoId?: number +} + +export type ActivitypubHttpUnicastPayload = { + uri: string + signatureActorId?: number + body: object + contextType?: ContextType +} + +export type RefreshPayload = { + type: 'video' | 'video-playlist' | 'actor' + url: string +} + +export type EmailPayload = SendEmailOptions + +export type VideoFileImportPayload = { + videoUUID: string + filePath: string +} + +export type VideoImportTorrentPayloadType = 'magnet-uri' | 'torrent-file' +export type VideoImportYoutubeDLPayloadType = 'youtube-dl' + +export type VideoImportYoutubeDLPayload = { + type: VideoImportYoutubeDLPayloadType + videoImportId: number + + fileExt?: string +} +export type VideoImportTorrentPayload = { + type: VideoImportTorrentPayloadType + videoImportId: number +} +export type VideoImportPayload = VideoImportYoutubeDLPayload | VideoImportTorrentPayload + +export type VideoRedundancyPayload = { + videoId: number +} + +// Video transcoding payloads + +interface BaseTranscodingPayload { + videoUUID: string + isNewVideo?: boolean +} + +export interface HLSTranscodingPayload extends BaseTranscodingPayload { + type: 'new-resolution-to-hls' + isPortraitMode?: boolean + resolution: VideoResolution + copyCodecs: boolean + isMaxQuality: boolean +} + +export interface NewResolutionTranscodingPayload extends BaseTranscodingPayload { + type: 'new-resolution-to-webtorrent' + isPortraitMode?: boolean + resolution: VideoResolution +} + +export interface MergeAudioTranscodingPayload extends BaseTranscodingPayload { + type: 'merge-audio-to-webtorrent' + resolution: VideoResolution +} + +export interface OptimizeTranscodingPayload extends BaseTranscodingPayload { + type: 'optimize-to-webtorrent' +} + +export type VideoTranscodingPayload = + HLSTranscodingPayload + | NewResolutionTranscodingPayload + | OptimizeTranscodingPayload + | MergeAudioTranscodingPayload + +export interface VideoLiveEndingPayload { + videoId: number +} + +export interface ActorKeysPayload { + actorId: number }