]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - shared/extra-utils/videos/video-channels.ts
Update dependencies.md
[github/Chocobozzz/PeerTube.git] / shared / extra-utils / videos / video-channels.ts
index 51d433940daa45cd0970d9debcdf0a92ea272383..0aab93e52f78edd0aca1766a653d8e4df53159c7 100644 (file)
@@ -3,12 +3,13 @@
 import * as request from 'supertest'
 import { VideoChannelUpdate } from '../../models/videos/channel/video-channel-update.model'
 import { VideoChannelCreate } from '../../models/videos/channel/video-channel-create.model'
-import { makeGetRequest, updateAvatarRequest } from '../requests/requests'
+import { makeDeleteRequest, makeGetRequest, updateImageRequest } from '../requests/requests'
 import { ServerInfo } from '../server/servers'
-import { User } from '../../models/users/user.model'
+import { MyUser, User } from '../../models/users/user.model'
 import { getMyUserInformation } from '../users/users'
+import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes'
 
-function getVideoChannelsList (url: string, start: number, count: number, sort?: string) {
+function getVideoChannelsList (url: string, start: number, count: number, sort?: string, withStats?: boolean) {
   const path = '/api/v1/video-channels'
 
   const req = request(url)
@@ -17,9 +18,10 @@ function getVideoChannelsList (url: string, start: number, count: number, sort?:
     .query({ count: count })
 
   if (sort) req.query({ sort })
+  if (withStats) req.query({ withStats })
 
   return req.set('Accept', 'application/json')
-            .expect(200)
+            .expect(HttpStatusCode.OK_200)
             .expect('Content-Type', /json/)
 }
 
@@ -29,9 +31,20 @@ function getAccountVideoChannelsList (parameters: {
   start?: number
   count?: number
   sort?: string
-  specialStatus?: number
+  specialStatus?: HttpStatusCode
+  withStats?: boolean
+  search?: string
 }) {
-  const { url, accountName, start, count, sort = 'createdAt', specialStatus = 200 } = parameters
+  const {
+    url,
+    accountName,
+    start,
+    count,
+    sort = 'createdAt',
+    specialStatus = HttpStatusCode.OK_200,
+    withStats = false,
+    search
+  } = parameters
 
   const path = '/api/v1/accounts/' + accountName + '/video-channels'
 
@@ -41,7 +54,9 @@ function getAccountVideoChannelsList (parameters: {
     query: {
       start,
       count,
-      sort
+      sort,
+      withStats,
+      search
     },
     statusCodeExpected: specialStatus
   })
@@ -51,7 +66,7 @@ function addVideoChannel (
   url: string,
   token: string,
   videoChannelAttributesArg: VideoChannelCreate,
-  expectedStatus = 200
+  expectedStatus = HttpStatusCode.OK_200
 ) {
   const path = '/api/v1/video-channels/'
 
@@ -76,7 +91,7 @@ function updateVideoChannel (
   token: string,
   channelName: string,
   attributes: VideoChannelUpdate,
-  expectedStatus = 204
+  expectedStatus = HttpStatusCode.NO_CONTENT_204
 ) {
   const body: any = {}
   const path = '/api/v1/video-channels/' + channelName
@@ -94,7 +109,7 @@ function updateVideoChannel (
     .expect(expectedStatus)
 }
 
-function deleteVideoChannel (url: string, token: string, channelName: string, expectedStatus = 204) {
+function deleteVideoChannel (url: string, token: string, channelName: string, expectedStatus = HttpStatusCode.NO_CONTENT_204) {
   const path = '/api/v1/video-channels/' + channelName
 
   return request(url)
@@ -110,20 +125,36 @@ function getVideoChannel (url: string, channelName: string) {
   return request(url)
     .get(path)
     .set('Accept', 'application/json')
-    .expect(200)
+    .expect(HttpStatusCode.OK_200)
     .expect('Content-Type', /json/)
 }
 
-function updateVideoChannelAvatar (options: {
+function updateVideoChannelImage (options: {
   url: string
   accessToken: string
   fixture: string
   videoChannelName: string | number
+  type: 'avatar' | 'banner'
 }) {
+  const path = `/api/v1/video-channels/${options.videoChannelName}/${options.type}/pick`
+
+  return updateImageRequest({ ...options, path, fieldname: options.type + 'file' })
+}
 
-  const path = '/api/v1/video-channels/' + options.videoChannelName + '/avatar/pick'
+function deleteVideoChannelImage (options: {
+  url: string
+  accessToken: string
+  videoChannelName: string | number
+  type: 'avatar' | 'banner'
+}) {
+  const path = `/api/v1/video-channels/${options.videoChannelName}/${options.type}`
 
-  return updateAvatarRequest(Object.assign(options, { path }))
+  return makeDeleteRequest({
+    url: options.url,
+    token: options.accessToken,
+    path,
+    statusCodeExpected: 204
+  })
 }
 
 function setDefaultVideoChannel (servers: ServerInfo[]) {
@@ -139,15 +170,23 @@ function setDefaultVideoChannel (servers: ServerInfo[]) {
   return Promise.all(tasks)
 }
 
+async function getDefaultVideoChannel (url: string, token: string) {
+  const res = await getMyUserInformation(url, token)
+
+  return (res.body as MyUser).videoChannels[0].id
+}
+
 // ---------------------------------------------------------------------------
 
 export {
-  updateVideoChannelAvatar,
+  updateVideoChannelImage,
   getVideoChannelsList,
   getAccountVideoChannelsList,
   addVideoChannel,
   updateVideoChannel,
   deleteVideoChannel,
   getVideoChannel,
-  setDefaultVideoChannel
+  setDefaultVideoChannel,
+  deleteVideoChannelImage,
+  getDefaultVideoChannel
 }