]>
Commit | Line | Data |
---|---|---|
2a491182 F |
1 | import { HttpStatusCode, ResultList, VideoChannelSync, VideoChannelSyncCreate } from '@shared/models' |
2 | import { pick } from '@shared/core-utils' | |
3 | import { unwrapBody } from '../requests' | |
4 | import { AbstractCommand, OverrideCommandOptions } from '../shared' | |
5 | ||
6 | export class ChannelSyncsCommand extends AbstractCommand { | |
7 | private static readonly API_PATH = '/api/v1/video-channel-syncs' | |
8 | ||
9 | listByAccount (options: OverrideCommandOptions & { | |
10 | accountName: string | |
11 | start?: number | |
12 | count?: number | |
13 | sort?: string | |
14 | }) { | |
15 | const { accountName, sort = 'createdAt' } = options | |
16 | ||
17 | const path = `/api/v1/accounts/${accountName}/video-channel-syncs` | |
18 | ||
19 | return this.getRequestBody<ResultList<VideoChannelSync>>({ | |
20 | ...options, | |
21 | ||
22 | path, | |
23 | query: { sort, ...pick(options, [ 'start', 'count' ]) }, | |
24 | implicitToken: true, | |
25 | defaultExpectedStatus: HttpStatusCode.OK_200 | |
26 | }) | |
27 | } | |
28 | ||
29 | async create (options: OverrideCommandOptions & { | |
30 | attributes: VideoChannelSyncCreate | |
31 | }) { | |
32 | return unwrapBody<{ videoChannelSync: VideoChannelSync }>(this.postBodyRequest({ | |
33 | ...options, | |
34 | ||
35 | path: ChannelSyncsCommand.API_PATH, | |
36 | fields: options.attributes, | |
37 | implicitToken: true, | |
38 | defaultExpectedStatus: HttpStatusCode.OK_200 | |
39 | })) | |
40 | } | |
41 | ||
42 | delete (options: OverrideCommandOptions & { | |
43 | channelSyncId: number | |
44 | }) { | |
45 | const path = `${ChannelSyncsCommand.API_PATH}/${options.channelSyncId}` | |
46 | ||
47 | return this.deleteRequest({ | |
48 | ...options, | |
49 | ||
50 | path, | |
51 | implicitToken: true, | |
52 | defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204 | |
53 | }) | |
54 | } | |
55 | } |