]>
Commit | Line | Data |
---|---|---|
2c27e704 | 1 | import { ResultList, Video, VideoChannel } from '@shared/models' |
c0e8b12e | 2 | import { HttpStatusCode } from '@shared/models' |
2c27e704 C |
3 | import { AbstractCommand, OverrideCommandOptions } from '../shared' |
4 | ||
5 | export class SubscriptionsCommand extends AbstractCommand { | |
6 | ||
7 | add (options: OverrideCommandOptions & { | |
8 | targetUri: string | |
9 | }) { | |
10 | const path = '/api/v1/users/me/subscriptions' | |
11 | ||
12 | return this.postBodyRequest({ | |
13 | ...options, | |
14 | ||
15 | path, | |
16 | fields: { uri: options.targetUri }, | |
a1637fa1 | 17 | implicitToken: true, |
2c27e704 C |
18 | defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204 |
19 | }) | |
20 | } | |
21 | ||
22 | list (options: OverrideCommandOptions & { | |
23 | sort?: string // default -createdAt | |
24 | search?: string | |
25 | } = {}) { | |
26 | const { sort = '-createdAt', search } = options | |
27 | const path = '/api/v1/users/me/subscriptions' | |
28 | ||
29 | return this.getRequestBody<ResultList<VideoChannel>>({ | |
30 | ...options, | |
31 | ||
32 | path, | |
33 | query: { | |
34 | sort, | |
35 | search | |
36 | }, | |
a1637fa1 | 37 | implicitToken: true, |
2c27e704 C |
38 | defaultExpectedStatus: HttpStatusCode.OK_200 |
39 | }) | |
40 | } | |
41 | ||
42 | listVideos (options: OverrideCommandOptions & { | |
43 | sort?: string // default -createdAt | |
44 | } = {}) { | |
45 | const { sort = '-createdAt' } = options | |
46 | const path = '/api/v1/users/me/subscriptions/videos' | |
47 | ||
48 | return this.getRequestBody<ResultList<Video>>({ | |
49 | ...options, | |
50 | ||
51 | path, | |
52 | query: { sort }, | |
a1637fa1 | 53 | implicitToken: true, |
2c27e704 C |
54 | defaultExpectedStatus: HttpStatusCode.OK_200 |
55 | }) | |
56 | } | |
57 | ||
58 | get (options: OverrideCommandOptions & { | |
59 | uri: string | |
60 | }) { | |
61 | const path = '/api/v1/users/me/subscriptions/' + options.uri | |
62 | ||
63 | return this.getRequestBody<VideoChannel>({ | |
64 | ...options, | |
65 | ||
66 | path, | |
a1637fa1 | 67 | implicitToken: true, |
2c27e704 C |
68 | defaultExpectedStatus: HttpStatusCode.OK_200 |
69 | }) | |
70 | } | |
71 | ||
72 | remove (options: OverrideCommandOptions & { | |
73 | uri: string | |
74 | }) { | |
75 | const path = '/api/v1/users/me/subscriptions/' + options.uri | |
76 | ||
77 | return this.deleteRequest({ | |
78 | ...options, | |
79 | ||
80 | path, | |
a1637fa1 | 81 | implicitToken: true, |
2c27e704 C |
82 | defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204 |
83 | }) | |
84 | } | |
85 | ||
86 | exist (options: OverrideCommandOptions & { | |
87 | uris: string[] | |
88 | }) { | |
89 | const path = '/api/v1/users/me/subscriptions/exist' | |
90 | ||
91 | return this.getRequestBody<{ [id: string ]: boolean }>({ | |
92 | ...options, | |
93 | ||
94 | path, | |
95 | query: { 'uris[]': options.uris }, | |
a1637fa1 | 96 | implicitToken: true, |
2c27e704 C |
97 | defaultExpectedStatus: HttpStatusCode.OK_200 |
98 | }) | |
99 | } | |
100 | } |