From 418d092afa81e2c8fe8ac6838fc4b5eb0af6a782 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 26 Feb 2019 10:55:40 +0100 Subject: Playlist server API --- .../models/videos/channel/video-channel.model.ts | 12 +++++++- .../videos/playlist/video-playlist-create.model.ts | 11 ++++++++ .../video-playlist-element-create.model.ts | 4 +++ .../video-playlist-element-update.model.ts | 4 +++ .../playlist/video-playlist-privacy.model.ts | 5 ++++ .../videos/playlist/video-playlist-update.model.ts | 10 +++++++ .../models/videos/playlist/video-playlist.model.ts | 23 ++++++++++++++++ shared/models/videos/video.model.ts | 32 ++++++---------------- 8 files changed, 77 insertions(+), 24 deletions(-) create mode 100644 shared/models/videos/playlist/video-playlist-create.model.ts create mode 100644 shared/models/videos/playlist/video-playlist-element-create.model.ts create mode 100644 shared/models/videos/playlist/video-playlist-element-update.model.ts create mode 100644 shared/models/videos/playlist/video-playlist-privacy.model.ts create mode 100644 shared/models/videos/playlist/video-playlist-update.model.ts create mode 100644 shared/models/videos/playlist/video-playlist.model.ts (limited to 'shared/models/videos') diff --git a/shared/models/videos/channel/video-channel.model.ts b/shared/models/videos/channel/video-channel.model.ts index 92918f66c..14a813f8f 100644 --- a/shared/models/videos/channel/video-channel.model.ts +++ b/shared/models/videos/channel/video-channel.model.ts @@ -1,6 +1,6 @@ import { Actor } from '../../actors/actor.model' -import { Video } from '../video.model' import { Account } from '../../actors/index' +import { Avatar } from '../../avatars' export interface VideoChannel extends Actor { displayName: string @@ -9,3 +9,13 @@ export interface VideoChannel extends Actor { isLocal: boolean ownerAccount?: Account } + +export interface VideoChannelSummary { + id: number + uuid: string + name: string + displayName: string + url: string + host: string + avatar?: Avatar +} diff --git a/shared/models/videos/playlist/video-playlist-create.model.ts b/shared/models/videos/playlist/video-playlist-create.model.ts new file mode 100644 index 000000000..386acbb96 --- /dev/null +++ b/shared/models/videos/playlist/video-playlist-create.model.ts @@ -0,0 +1,11 @@ +import { VideoPlaylistPrivacy } from './video-playlist-privacy.model' + +export interface VideoPlaylistCreate { + displayName: string + description: string + privacy: VideoPlaylistPrivacy + + videoChannelId?: number + + thumbnailfile?: Blob +} diff --git a/shared/models/videos/playlist/video-playlist-element-create.model.ts b/shared/models/videos/playlist/video-playlist-element-create.model.ts new file mode 100644 index 000000000..9bd56a8ca --- /dev/null +++ b/shared/models/videos/playlist/video-playlist-element-create.model.ts @@ -0,0 +1,4 @@ +export interface VideoPlaylistElementCreate { + startTimestamp?: number + stopTimestamp?: number +} diff --git a/shared/models/videos/playlist/video-playlist-element-update.model.ts b/shared/models/videos/playlist/video-playlist-element-update.model.ts new file mode 100644 index 000000000..15a30fbdc --- /dev/null +++ b/shared/models/videos/playlist/video-playlist-element-update.model.ts @@ -0,0 +1,4 @@ +export interface VideoPlaylistElementUpdate { + startTimestamp?: number + stopTimestamp?: number +} diff --git a/shared/models/videos/playlist/video-playlist-privacy.model.ts b/shared/models/videos/playlist/video-playlist-privacy.model.ts new file mode 100644 index 000000000..96e5e2211 --- /dev/null +++ b/shared/models/videos/playlist/video-playlist-privacy.model.ts @@ -0,0 +1,5 @@ +export enum VideoPlaylistPrivacy { + PUBLIC = 1, + UNLISTED = 2, + PRIVATE = 3 +} diff --git a/shared/models/videos/playlist/video-playlist-update.model.ts b/shared/models/videos/playlist/video-playlist-update.model.ts new file mode 100644 index 000000000..c7a15c550 --- /dev/null +++ b/shared/models/videos/playlist/video-playlist-update.model.ts @@ -0,0 +1,10 @@ +import { VideoPlaylistPrivacy } from './video-playlist-privacy.model' + +export interface VideoPlaylistUpdate { + displayName: string + description: string + privacy: VideoPlaylistPrivacy + + videoChannelId?: number + thumbnailfile?: Blob +} diff --git a/shared/models/videos/playlist/video-playlist.model.ts b/shared/models/videos/playlist/video-playlist.model.ts new file mode 100644 index 000000000..6aa04048c --- /dev/null +++ b/shared/models/videos/playlist/video-playlist.model.ts @@ -0,0 +1,23 @@ +import { AccountSummary } from '../../actors/index' +import { VideoChannelSummary, VideoConstant } from '..' +import { VideoPlaylistPrivacy } from './video-playlist-privacy.model' + +export interface VideoPlaylist { + id: number + uuid: string + isLocal: boolean + + displayName: string + description: string + privacy: VideoConstant + + thumbnailPath: string + + videosLength: number + + createdAt: Date | string + updatedAt: Date | string + + ownerAccount?: AccountSummary + videoChannel?: VideoChannelSummary +} diff --git a/shared/models/videos/video.model.ts b/shared/models/videos/video.model.ts index df800461c..6e7a6831e 100644 --- a/shared/models/videos/video.model.ts +++ b/shared/models/videos/video.model.ts @@ -1,4 +1,4 @@ -import { VideoResolution, VideoState } from '../../index' +import { AccountSummary, VideoChannelSummary, VideoResolution, VideoState } from '../../index' import { Account } from '../actors' import { Avatar } from '../avatars/avatar.model' import { VideoChannel } from './channel/video-channel.model' @@ -18,26 +18,6 @@ export interface VideoFile { 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: number uuid: string @@ -68,12 +48,18 @@ export interface Video { blacklisted?: boolean blacklistedReason?: string - account: AccountAttribute - channel: VideoChannelAttribute + account: AccountSummary + channel: VideoChannelSummary userHistory?: { currentTime: number } + + playlistElement?: { + position: number + startTimestamp: number + stopTimestamp: number + } } export interface VideoDetails extends Video { -- cgit v1.2.3