1 import { HttpStatusCode, ResultList, Video, 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 listVideos (options: OverrideCommandOptions & {
42 sort?: string // default -createdAt
44 const { sort = '-createdAt' } = options
45 const path = '/api/v1/users/me/subscriptions/videos'
47 return this.getRequestBody<ResultList<Video>>({
53 defaultExpectedStatus: HttpStatusCode.OK_200
57 get (options: OverrideCommandOptions & {
60 const path = '/api/v1/users/me/subscriptions/' + options.uri
62 return this.getRequestBody<VideoChannel>({
67 defaultExpectedStatus: HttpStatusCode.OK_200
71 remove (options: OverrideCommandOptions & {
74 const path = '/api/v1/users/me/subscriptions/' + options.uri
76 return this.deleteRequest({
81 defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204
85 exist (options: OverrideCommandOptions & {
88 const path = '/api/v1/users/me/subscriptions/exist'
90 return this.getRequestBody<{ [id: string ]: boolean }>({
94 query: { 'uris[]': options.uris },
96 defaultExpectedStatus: HttpStatusCode.OK_200