diff options
author | Chocobozzz <me@florianbigard.com> | 2021-07-09 11:21:30 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2021-07-20 15:27:18 +0200 |
commit | a54618880c394ad7571f3f3222dc96ec2dd10d9a (patch) | |
tree | c9f7b05e578abc2383bccd707c11438c61857c72 /shared/extra-utils/videos/video-channels.ts | |
parent | 57f879a540551c3b958b0991c8e1e3657a4481d8 (diff) | |
download | PeerTube-a54618880c394ad7571f3f3222dc96ec2dd10d9a.tar.gz PeerTube-a54618880c394ad7571f3f3222dc96ec2dd10d9a.tar.zst PeerTube-a54618880c394ad7571f3f3222dc96ec2dd10d9a.zip |
Introduce channels command
Diffstat (limited to 'shared/extra-utils/videos/video-channels.ts')
-rw-r--r-- | shared/extra-utils/videos/video-channels.ts | 192 |
1 files changed, 0 insertions, 192 deletions
diff --git a/shared/extra-utils/videos/video-channels.ts b/shared/extra-utils/videos/video-channels.ts deleted file mode 100644 index 0aab93e52..000000000 --- a/shared/extra-utils/videos/video-channels.ts +++ /dev/null | |||
@@ -1,192 +0,0 @@ | |||
1 | /* eslint-disable @typescript-eslint/no-floating-promises */ | ||
2 | |||
3 | import * as request from 'supertest' | ||
4 | import { VideoChannelUpdate } from '../../models/videos/channel/video-channel-update.model' | ||
5 | import { VideoChannelCreate } from '../../models/videos/channel/video-channel-create.model' | ||
6 | import { makeDeleteRequest, makeGetRequest, updateImageRequest } from '../requests/requests' | ||
7 | import { ServerInfo } from '../server/servers' | ||
8 | import { MyUser, User } from '../../models/users/user.model' | ||
9 | import { getMyUserInformation } from '../users/users' | ||
10 | import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes' | ||
11 | |||
12 | function getVideoChannelsList (url: string, start: number, count: number, sort?: string, withStats?: boolean) { | ||
13 | const path = '/api/v1/video-channels' | ||
14 | |||
15 | const req = request(url) | ||
16 | .get(path) | ||
17 | .query({ start: start }) | ||
18 | .query({ count: count }) | ||
19 | |||
20 | if (sort) req.query({ sort }) | ||
21 | if (withStats) req.query({ withStats }) | ||
22 | |||
23 | return req.set('Accept', 'application/json') | ||
24 | .expect(HttpStatusCode.OK_200) | ||
25 | .expect('Content-Type', /json/) | ||
26 | } | ||
27 | |||
28 | function getAccountVideoChannelsList (parameters: { | ||
29 | url: string | ||
30 | accountName: string | ||
31 | start?: number | ||
32 | count?: number | ||
33 | sort?: string | ||
34 | specialStatus?: HttpStatusCode | ||
35 | withStats?: boolean | ||
36 | search?: string | ||
37 | }) { | ||
38 | const { | ||
39 | url, | ||
40 | accountName, | ||
41 | start, | ||
42 | count, | ||
43 | sort = 'createdAt', | ||
44 | specialStatus = HttpStatusCode.OK_200, | ||
45 | withStats = false, | ||
46 | search | ||
47 | } = parameters | ||
48 | |||
49 | const path = '/api/v1/accounts/' + accountName + '/video-channels' | ||
50 | |||
51 | return makeGetRequest({ | ||
52 | url, | ||
53 | path, | ||
54 | query: { | ||
55 | start, | ||
56 | count, | ||
57 | sort, | ||
58 | withStats, | ||
59 | search | ||
60 | }, | ||
61 | statusCodeExpected: specialStatus | ||
62 | }) | ||
63 | } | ||
64 | |||
65 | function addVideoChannel ( | ||
66 | url: string, | ||
67 | token: string, | ||
68 | videoChannelAttributesArg: VideoChannelCreate, | ||
69 | expectedStatus = HttpStatusCode.OK_200 | ||
70 | ) { | ||
71 | const path = '/api/v1/video-channels/' | ||
72 | |||
73 | // Default attributes | ||
74 | let attributes = { | ||
75 | displayName: 'my super video channel', | ||
76 | description: 'my super channel description', | ||
77 | support: 'my super channel support' | ||
78 | } | ||
79 | attributes = Object.assign(attributes, videoChannelAttributesArg) | ||
80 | |||
81 | return request(url) | ||
82 | .post(path) | ||
83 | .send(attributes) | ||
84 | .set('Accept', 'application/json') | ||
85 | .set('Authorization', 'Bearer ' + token) | ||
86 | .expect(expectedStatus) | ||
87 | } | ||
88 | |||
89 | function updateVideoChannel ( | ||
90 | url: string, | ||
91 | token: string, | ||
92 | channelName: string, | ||
93 | attributes: VideoChannelUpdate, | ||
94 | expectedStatus = HttpStatusCode.NO_CONTENT_204 | ||
95 | ) { | ||
96 | const body: any = {} | ||
97 | const path = '/api/v1/video-channels/' + channelName | ||
98 | |||
99 | if (attributes.displayName) body.displayName = attributes.displayName | ||
100 | if (attributes.description) body.description = attributes.description | ||
101 | if (attributes.support) body.support = attributes.support | ||
102 | if (attributes.bulkVideosSupportUpdate) body.bulkVideosSupportUpdate = attributes.bulkVideosSupportUpdate | ||
103 | |||
104 | return request(url) | ||
105 | .put(path) | ||
106 | .send(body) | ||
107 | .set('Accept', 'application/json') | ||
108 | .set('Authorization', 'Bearer ' + token) | ||
109 | .expect(expectedStatus) | ||
110 | } | ||
111 | |||
112 | function deleteVideoChannel (url: string, token: string, channelName: string, expectedStatus = HttpStatusCode.NO_CONTENT_204) { | ||
113 | const path = '/api/v1/video-channels/' + channelName | ||
114 | |||
115 | return request(url) | ||
116 | .delete(path) | ||
117 | .set('Accept', 'application/json') | ||
118 | .set('Authorization', 'Bearer ' + token) | ||
119 | .expect(expectedStatus) | ||
120 | } | ||
121 | |||
122 | function getVideoChannel (url: string, channelName: string) { | ||
123 | const path = '/api/v1/video-channels/' + channelName | ||
124 | |||
125 | return request(url) | ||
126 | .get(path) | ||
127 | .set('Accept', 'application/json') | ||
128 | .expect(HttpStatusCode.OK_200) | ||
129 | .expect('Content-Type', /json/) | ||
130 | } | ||
131 | |||
132 | function updateVideoChannelImage (options: { | ||
133 | url: string | ||
134 | accessToken: string | ||
135 | fixture: string | ||
136 | videoChannelName: string | number | ||
137 | type: 'avatar' | 'banner' | ||
138 | }) { | ||
139 | const path = `/api/v1/video-channels/${options.videoChannelName}/${options.type}/pick` | ||
140 | |||
141 | return updateImageRequest({ ...options, path, fieldname: options.type + 'file' }) | ||
142 | } | ||
143 | |||
144 | function deleteVideoChannelImage (options: { | ||
145 | url: string | ||
146 | accessToken: string | ||
147 | videoChannelName: string | number | ||
148 | type: 'avatar' | 'banner' | ||
149 | }) { | ||
150 | const path = `/api/v1/video-channels/${options.videoChannelName}/${options.type}` | ||
151 | |||
152 | return makeDeleteRequest({ | ||
153 | url: options.url, | ||
154 | token: options.accessToken, | ||
155 | path, | ||
156 | statusCodeExpected: 204 | ||
157 | }) | ||
158 | } | ||
159 | |||
160 | function setDefaultVideoChannel (servers: ServerInfo[]) { | ||
161 | const tasks: Promise<any>[] = [] | ||
162 | |||
163 | for (const server of servers) { | ||
164 | const p = getMyUserInformation(server.url, server.accessToken) | ||
165 | .then(res => { server.videoChannel = (res.body as User).videoChannels[0] }) | ||
166 | |||
167 | tasks.push(p) | ||
168 | } | ||
169 | |||
170 | return Promise.all(tasks) | ||
171 | } | ||
172 | |||
173 | async function getDefaultVideoChannel (url: string, token: string) { | ||
174 | const res = await getMyUserInformation(url, token) | ||
175 | |||
176 | return (res.body as MyUser).videoChannels[0].id | ||
177 | } | ||
178 | |||
179 | // --------------------------------------------------------------------------- | ||
180 | |||
181 | export { | ||
182 | updateVideoChannelImage, | ||
183 | getVideoChannelsList, | ||
184 | getAccountVideoChannelsList, | ||
185 | addVideoChannel, | ||
186 | updateVideoChannel, | ||
187 | deleteVideoChannel, | ||
188 | getVideoChannel, | ||
189 | setDefaultVideoChannel, | ||
190 | deleteVideoChannelImage, | ||
191 | getDefaultVideoChannel | ||
192 | } | ||