1 import { HttpStatusCode, ResultList, VideoChannel } from '@shared/models'
2 import { AbstractCommand, OverrideCommandOptions } from '../shared'
4 export class SubscriptionsCommand extends AbstractCommand {
6 add (options: OverrideCommandOptions & {
9 const path = '/api/v1/users/me/subscriptions'
11 return this.postBodyRequest({
15 fields: { uri: options.targetUri },
17 defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204
21 list (options: OverrideCommandOptions & {
22 sort?: string // default -createdAt
25 const { sort = '-createdAt', search } = options
26 const path = '/api/v1/users/me/subscriptions'
28 return this.getRequestBody<ResultList<VideoChannel>>({
37 defaultExpectedStatus: HttpStatusCode.OK_200
41 get (options: OverrideCommandOptions & {
44 const path = '/api/v1/users/me/subscriptions/' + options.uri
46 return this.getRequestBody<VideoChannel>({
51 defaultExpectedStatus: HttpStatusCode.OK_200
55 remove (options: OverrideCommandOptions & {
58 const path = '/api/v1/users/me/subscriptions/' + options.uri
60 return this.deleteRequest({
65 defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204
69 exist (options: OverrideCommandOptions & {
72 const path = '/api/v1/users/me/subscriptions/exist'
74 return this.getRequestBody<{ [id: string ]: boolean }>({
78 query: { 'uris[]': options.uris },
80 defaultExpectedStatus: HttpStatusCode.OK_200