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 = 204) {
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 || 200
70 function updateVideoPlaylist (options: {
73 playlistAttrs: VideoPlaylistUpdate,
74 playlistId: number | string,
75 expectedStatus?: number
77 const path = '/api/v1/video-playlists/' + options.playlistId
79 const fields = omit(options.playlistAttrs, 'thumbnailfile')
81 const attaches = options.playlistAttrs.thumbnailfile
82 ? { thumbnailfile: options.playlistAttrs.thumbnailfile }
85 return makeUploadRequest({
92 statusCodeExpected: options.expectedStatus || 204
96 function addVideoInPlaylist (options: {
99 playlistId: number | string,
100 elementAttrs: VideoPlaylistElementCreate
101 expectedStatus?: number
103 const path = '/api/v1/video-playlists/' + options.playlistId + '/videos'
105 return makePostBodyRequest({
108 token: options.token,
109 fields: options.elementAttrs,
110 statusCodeExpected: options.expectedStatus || 200
114 function updateVideoPlaylistElement (options: {
117 playlistId: number | string,
118 videoId: number | string,
119 elementAttrs: VideoPlaylistElementUpdate,
120 expectedStatus?: number
122 const path = '/api/v1/video-playlists/' + options.playlistId + '/videos/' + options.videoId
124 return makePutBodyRequest({
127 token: options.token,
128 fields: options.elementAttrs,
129 statusCodeExpected: options.expectedStatus || 204
133 function removeVideoFromPlaylist (options: {
136 playlistId: number | string,
137 videoId: number | string,
138 expectedStatus: number
140 const path = '/api/v1/video-playlists/' + options.playlistId + '/videos/' + options.videoId
142 return makeDeleteRequest({
145 token: options.token,
146 statusCodeExpected: options.expectedStatus || 204
150 function reorderVideosPlaylist (options: {
153 playlistId: number | string,
155 startPosition: number,
156 insertAfterPosition: number,
157 reorderLength?: number
159 expectedStatus: number
161 const path = '/api/v1/video-playlists/' + options.playlistId + '/videos/reorder'
163 return makePostBodyRequest({
166 token: options.token,
167 fields: options.elementAttrs,
168 statusCodeExpected: options.expectedStatus
172 // ---------------------------------------------------------------------------
175 getVideoPlaylistsList,
183 updateVideoPlaylistElement,
184 removeVideoFromPlaylist,
186 reorderVideosPlaylist