PeerTube/shared/models/server/job.model.ts

135 lines
3.2 KiB
TypeScript
Raw Normal View History

import { ContextType } from '../activitypub/context'
import { VideoResolution } from '../videos/video-resolution.enum'
import { SendEmailOptions } from './emailer.model'
2020-04-23 09:32:53 +02:00
2020-12-14 12:00:35 +01:00
export type JobState = 'active' | 'completed' | 'failed' | 'waiting' | 'delayed' | 'paused'
2020-01-31 16:56:52 +01:00
export type JobType =
| 'activitypub-http-unicast'
| 'activitypub-http-broadcast'
| 'activitypub-http-fetcher'
| 'activitypub-follow'
| 'video-file-import'
| 'video-transcoding'
| 'email'
| 'video-import'
| 'videos-views'
| 'activitypub-refresher'
| 'video-redundancy'
| 'video-live-ending'
2017-11-30 10:51:13 +01:00
export interface Job {
id: number
state: JobState
type: JobType
2020-01-31 16:56:52 +01:00
data: any
priority: number
2021-01-21 14:42:43 +01:00
progress: number
2020-01-31 16:56:52 +01:00
error: any
2019-12-04 14:49:59 +01:00
createdAt: Date | string
finishedOn: Date | string
processedOn: Date | string
2017-11-30 10:51:13 +01:00
}
2020-04-23 09:32:53 +02:00
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
accountId?: number
}
export type ActivitypubHttpUnicastPayload = {
uri: string
signatureActorId?: number
body: any
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'
2020-04-23 09:32:53 +02:00
export type VideoImportYoutubeDLPayload = {
type: VideoImportYoutubeDLPayloadType
2020-04-23 09:32:53 +02:00
videoImportId: number
generateThumbnail: boolean
generatePreview: boolean
fileExt?: string
}
export type VideoImportTorrentPayload = {
type: VideoImportTorrentPayloadType
2020-04-23 09:32:53 +02:00
videoImportId: number
}
export type VideoImportPayload = VideoImportYoutubeDLPayload | VideoImportTorrentPayload
export type VideoRedundancyPayload = {
videoId: number
}
// Video transcoding payloads
interface BaseTranscodingPayload {
videoUUID: string
isNewVideo?: boolean
}
2021-01-21 15:58:17 +01:00
export interface HLSTranscodingPayload extends BaseTranscodingPayload {
type: 'new-resolution-to-hls'
2020-04-23 09:32:53 +02:00
isPortraitMode?: boolean
resolution: VideoResolution
copyCodecs: boolean
}
export interface NewResolutionTranscodingPayload extends BaseTranscodingPayload {
2021-01-21 15:58:17 +01:00
type: 'new-resolution-to-webtorrent'
2020-04-23 09:32:53 +02:00
isPortraitMode?: boolean
resolution: VideoResolution
}
export interface MergeAudioTranscodingPayload extends BaseTranscodingPayload {
2021-01-21 15:58:17 +01:00
type: 'merge-audio-to-webtorrent'
2020-04-23 09:32:53 +02:00
resolution: VideoResolution
}
export interface OptimizeTranscodingPayload extends BaseTranscodingPayload {
2021-01-21 15:58:17 +01:00
type: 'optimize-to-webtorrent'
2020-04-23 09:32:53 +02:00
}
export type VideoTranscodingPayload =
HLSTranscodingPayload
| NewResolutionTranscodingPayload
| OptimizeTranscodingPayload
| MergeAudioTranscodingPayload
export interface VideoLiveEndingPayload {
videoId: number
}