1 import { ResultList, Video, VideoChannel } from '@shared/models'
2 import { HttpStatusCode } from '@shared/models'
3 import { AbstractCommand, OverrideCommandOptions } from '../shared'
5 export class SubscriptionsCommand extends AbstractCommand {
7 add (options: OverrideCommandOptions & {
10 const path = '/api/v1/users/me/subscriptions'
12 return this.postBodyRequest({
16 fields: { uri: options.targetUri },
18 defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204
22 list (options: OverrideCommandOptions & {
23 sort?: string // default -createdAt
26 const { sort = '-createdAt', search } = options
27 const path = '/api/v1/users/me/subscriptions'
29 return this.getRequestBody<ResultList<VideoChannel>>({
38 defaultExpectedStatus: HttpStatusCode.OK_200
42 listVideos (options: OverrideCommandOptions & {
43 sort?: string // default -createdAt
45 const { sort = '-createdAt' } = options
46 const path = '/api/v1/users/me/subscriptions/videos'
48 return this.getRequestBody<ResultList<Video>>({
54 defaultExpectedStatus: HttpStatusCode.OK_200
58 get (options: OverrideCommandOptions & {
61 const path = '/api/v1/users/me/subscriptions/' + options.uri
63 return this.getRequestBody<VideoChannel>({
68 defaultExpectedStatus: HttpStatusCode.OK_200
72 remove (options: OverrideCommandOptions & {
75 const path = '/api/v1/users/me/subscriptions/' + options.uri
77 return this.deleteRequest({
82 defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204
86 exist (options: OverrideCommandOptions & {
89 const path = '/api/v1/users/me/subscriptions/exist'
91 return this.getRequestBody<{ [id: string ]: boolean }>({
95 query: { 'uris[]': options.uris },
97 defaultExpectedStatus: HttpStatusCode.OK_200