99 lines
2.1 KiB
TypeScript
99 lines
2.1 KiB
TypeScript
|
import {
|
||
|
HttpStatusCode,
|
||
|
ResultList,
|
||
|
Video,
|
||
|
VideoChannel,
|
||
|
VideoChannelsSearchQuery,
|
||
|
VideoPlaylist,
|
||
|
VideoPlaylistsSearchQuery,
|
||
|
VideosSearchQuery
|
||
|
} from '@shared/models'
|
||
|
import { AbstractCommand, OverrideCommandOptions } from '../shared'
|
||
|
|
||
|
export class SearchCommand extends AbstractCommand {
|
||
|
|
||
|
searchChannels (options: OverrideCommandOptions & {
|
||
|
search: string
|
||
|
}) {
|
||
|
return this.advancedChannelSearch({
|
||
|
...options,
|
||
|
|
||
|
search: { search: options.search }
|
||
|
})
|
||
|
}
|
||
|
|
||
|
advancedChannelSearch (options: OverrideCommandOptions & {
|
||
|
search: VideoChannelsSearchQuery
|
||
|
}) {
|
||
|
const { search } = options
|
||
|
const path = '/api/v1/search/video-channels'
|
||
|
|
||
|
return this.getRequestBody<ResultList<VideoChannel>>({
|
||
|
...options,
|
||
|
|
||
|
path,
|
||
|
query: search,
|
||
|
implicitToken: false,
|
||
|
defaultExpectedStatus: HttpStatusCode.OK_200
|
||
|
})
|
||
|
}
|
||
|
|
||
|
searchPlaylists (options: OverrideCommandOptions & {
|
||
|
search: string
|
||
|
}) {
|
||
|
return this.advancedPlaylistSearch({
|
||
|
...options,
|
||
|
|
||
|
search: { search: options.search }
|
||
|
})
|
||
|
}
|
||
|
|
||
|
advancedPlaylistSearch (options: OverrideCommandOptions & {
|
||
|
search: VideoPlaylistsSearchQuery
|
||
|
}) {
|
||
|
const { search } = options
|
||
|
const path = '/api/v1/search/video-playlists'
|
||
|
|
||
|
return this.getRequestBody<ResultList<VideoPlaylist>>({
|
||
|
...options,
|
||
|
|
||
|
path,
|
||
|
query: search,
|
||
|
implicitToken: false,
|
||
|
defaultExpectedStatus: HttpStatusCode.OK_200
|
||
|
})
|
||
|
}
|
||
|
|
||
|
searchVideos (options: OverrideCommandOptions & {
|
||
|
search: string
|
||
|
sort?: string
|
||
|
}) {
|
||
|
const { search, sort } = options
|
||
|
|
||
|
return this.advancedVideoSearch({
|
||
|
...options,
|
||
|
|
||
|
search: {
|
||
|
search: search,
|
||
|
sort: sort ?? '-publishedAt'
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
advancedVideoSearch (options: OverrideCommandOptions & {
|
||
|
search: VideosSearchQuery
|
||
|
}) {
|
||
|
const { search } = options
|
||
|
const path = '/api/v1/search/videos'
|
||
|
|
||
|
return this.getRequestBody<ResultList<Video>>({
|
||
|
...options,
|
||
|
|
||
|
path,
|
||
|
query: search,
|
||
|
implicitToken: false,
|
||
|
defaultExpectedStatus: HttpStatusCode.OK_200
|
||
|
})
|
||
|
}
|
||
|
}
|