import { HttpStatusCode , ResultList , Video , VideoChannel } from '@shared/models' ; import { AbstractCommand , OverrideCommandOptions } from '../shared' ; export class SubscriptionsCommand extends AbstractCommand { add ( options ) { const path = '/api/v1/users/me/subscriptions' ; return this . postBodyRequest ( { ... options , path , fields : { uri : options . targetUri } , implicitToken : true , defaultExpectedStatus : HttpStatusCode . NO_CONTENT_204 } ) ; } list ( options = { } ) { const { sort = '-createdAt' , search } = options ; const path = '/api/v1/users/me/subscriptions' ; return this . getRequestBody < ResultList < VideoChannel > > ( { ... options , path , query : { sort , search } , implicitToken : true , defaultExpectedStatus : HttpStatusCode . OK_200 } ) ; } listVideos ( options = { } ) { const { sort = '-createdAt' } = options ; const path = '/api/v1/users/me/subscriptions/videos' ; return this . getRequestBody < ResultList < Video > > ( { ... options , path , query : { sort } , implicitToken : true , defaultExpectedStatus : HttpStatusCode . OK_200 } ) ; } get ( options ) { const path = '/api/v1/users/me/subscriptions/' + options . uri ; return this . getRequestBody < VideoChannel > ( { ... options , path , implicitToken : true , defaultExpectedStatus : HttpStatusCode . OK_200 } ) ; } remove ( options ) { const path = '/api/v1/users/me/subscriptions/' + options . uri ; return this . deleteRequest ( { ... options , path , implicitToken : true , defaultExpectedStatus : HttpStatusCode . NO_CONTENT_204 } ) ; } exist ( options ) { const path = '/api/v1/users/me/subscriptions/exist' ; return this . getRequestBody < { [ id ] : boolean ; } > ( { ... options , path , query : { 'uris[]' : options . uris } , implicitToken : true , defaultExpectedStatus : HttpStatusCode . OK_200 } ) ; } }