]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - shared/models/videos/video.model.ts
Fix problem with SMTP in default docker-compose setup
[github/Chocobozzz/PeerTube.git] / shared / models / videos / video.model.ts
index 2e35f005c97d2feab42755a2164f09719565ed14..df800461c0b7095e4a58ca8d4a510c4926ffb57c 100644 (file)
@@ -1,23 +1,96 @@
+import { VideoResolution, VideoState } from '../../index'
+import { Account } from '../actors'
+import { Avatar } from '../avatars/avatar.model'
+import { VideoChannel } from './channel/video-channel.model'
+import { VideoPrivacy } from './video-privacy.enum'
+import { VideoScheduleUpdate } from './video-schedule-update.model'
+import { VideoConstant } from './video-constant.model'
+import { VideoStreamingPlaylist } from './video-streaming-playlist.model'
+
+export interface VideoFile {
+  magnetUri: string
+  resolution: VideoConstant<VideoResolution>
+  size: number // Bytes
+  torrentUrl: string
+  torrentDownloadUrl: string
+  fileUrl: string
+  fileDownloadUrl: string
+  fps: number
+}
+
+export interface VideoChannelAttribute {
+  id: number
+  uuid: string
+  name: string
+  displayName: string
+  url: string
+  host: string
+  avatar?: Avatar
+}
+
+export interface AccountAttribute {
+  id: number
+  uuid: string
+  name: string
+  displayName: string
+  url: string
+  host: string
+  avatar?: Avatar
+}
+
 export interface Video {
-  id: string
-  author: string
-  createdAt: Date
-  categoryLabel: string
-  category: number
-  licenceLabel: string
-  licence: number
-  languageLabel: string
-  language: number
+  id: number
+  uuid: string
+  createdAt: Date | string
+  updatedAt: Date | string
+  publishedAt: Date | string
+  originallyPublishedAt: Date | string
+  category: VideoConstant<number>
+  licence: VideoConstant<number>
+  language: VideoConstant<string>
+  privacy: VideoConstant<VideoPrivacy>
   description: string
   duration: number
   isLocal: boolean
-  magnetUri: string
   name: string
-  podHost: string
-  tags: string[]
   thumbnailPath: string
+  previewPath: string
+  embedPath: string
   views: number
   likes: number
   dislikes: number
   nsfw: boolean
+
+  waitTranscoding?: boolean
+  state?: VideoConstant<VideoState>
+  scheduledUpdate?: VideoScheduleUpdate
+
+  blacklisted?: boolean
+  blacklistedReason?: string
+
+  account: AccountAttribute
+  channel: VideoChannelAttribute
+
+  userHistory?: {
+    currentTime: number
+  }
+}
+
+export interface VideoDetails extends Video {
+  descriptionPath: string
+  support: string
+  channel: VideoChannel
+  tags: string[]
+  files: VideoFile[]
+  account: Account
+  commentsEnabled: boolean
+  downloadEnabled: boolean
+
+  // Not optional in details (unlike in Video)
+  waitTranscoding: boolean
+  state: VideoConstant<VideoState>
+
+  trackerUrls: string[]
+
+  streamingPlaylists: VideoStreamingPlaylist[]
 }