1 import { makeDeleteRequest, makeGetRequest, makePostBodyRequest, makePutBodyRequest, makeUploadRequest } from '../requests/requests'
2 import { VideoPlaylistCreate } from '../../models/videos/playlist/video-playlist-create.model'
3 import { omit } from 'lodash'
4 import { VideoPlaylistUpdate } from '../../models/videos/playlist/video-playlist-update.model'
5 import { VideoPlaylistElementCreate } from '../../models/videos/playlist/video-playlist-element-create.model'
6 import { VideoPlaylistElementUpdate } from '../../models/videos/playlist/video-playlist-element-update.model'
8 function getVideoPlaylistsList (url: string, start: number, count: number, sort?: string) {
9 const path = '/api/v1/video-playlists'
17 return makeGetRequest({
24 function getVideoPlaylist (url: string, playlistId: number | string, statusCodeExpected = 200) {
25 const path = '/api/v1/video-playlists/' + playlistId
27 return makeGetRequest({
34 function deleteVideoPlaylist (url: string, token: string, playlistId: number | string, statusCodeExpected = 200) {
35 const path = '/api/v1/video-playlists/' + playlistId
37 return makeDeleteRequest({
45 function createVideoPlaylist (options: {
48 playlistAttrs: VideoPlaylistCreate,
49 expectedStatus: number
51 const path = '/api/v1/video-playlists/'
53 const fields = omit(options.playlistAttrs, 'thumbnailfile')
55 const attaches = options.playlistAttrs.thumbnailfile
56 ? { thumbnailfile: options.playlistAttrs.thumbnailfile }
59 return makeUploadRequest({
66 statusCodeExpected: options.expectedStatus
70 function updateVideoPlaylist (options: {
73 playlistAttrs: VideoPlaylistUpdate,
74 expectedStatus: number
76 const path = '/api/v1/video-playlists/'
78 const fields = omit(options.playlistAttrs, 'thumbnailfile')
80 const attaches = options.playlistAttrs.thumbnailfile
81 ? { thumbnailfile: options.playlistAttrs.thumbnailfile }
84 return makeUploadRequest({
91 statusCodeExpected: options.expectedStatus
95 function addVideoInPlaylist (options: {
98 playlistId: number | string,
99 elementAttrs: VideoPlaylistElementCreate
100 expectedStatus: number
102 const path = '/api/v1/video-playlists/' + options.playlistId + '/videos'
104 return makePostBodyRequest({
107 token: options.token,
108 fields: options.elementAttrs,
109 statusCodeExpected: options.expectedStatus
113 function updateVideoPlaylistElement (options: {
116 playlistId: number | string,
117 videoId: number | string,
118 elementAttrs: VideoPlaylistElementUpdate,
119 expectedStatus: number
121 const path = '/api/v1/video-playlists/' + options.playlistId + '/videos/' + options.videoId
123 return makePutBodyRequest({
126 token: options.token,
127 fields: options.elementAttrs,
128 statusCodeExpected: options.expectedStatus
132 function removeVideoFromPlaylist (options: {
135 playlistId: number | string,
136 videoId: number | string,
137 expectedStatus: number
139 const path = '/api/v1/video-playlists/' + options.playlistId + '/videos/' + options.videoId
141 return makeDeleteRequest({
144 token: options.token,
145 statusCodeExpected: options.expectedStatus
149 function reorderVideosPlaylist (options: {
152 playlistId: number | string,
154 startPosition: number,
156 reorderLength?: number
158 expectedStatus: number
160 const path = '/api/v1/video-playlists/' + options.playlistId + '/videos'
162 return makePutBodyRequest({
165 token: options.token,
166 fields: options.elementAttrs,
167 statusCodeExpected: options.expectedStatus
171 // ---------------------------------------------------------------------------
174 getVideoPlaylistsList,
182 removeVideoFromPlaylist,
184 reorderVideosPlaylist