]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - shared/extra-utils/users/subscriptions-command.ts
Introduce server commands
[github/Chocobozzz/PeerTube.git] / shared / extra-utils / users / subscriptions-command.ts
CommitLineData
2c27e704
C
1import { ResultList, Video, VideoChannel } from '@shared/models'
2import { HttpStatusCode } from '../../core-utils/miscs/http-error-codes'
3import { AbstractCommand, OverrideCommandOptions } from '../shared'
4
5export 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}