]>
Commit | Line | Data |
---|---|---|
af971e06 | 1 | import { |
4c7e60bc | 2 | HttpStatusCode, |
af971e06 C |
3 | ResultList, |
4 | Video, | |
5 | VideoChannel, | |
6 | VideoChannelsSearchQuery, | |
7 | VideoPlaylist, | |
8 | VideoPlaylistsSearchQuery, | |
9 | VideosSearchQuery | |
10 | } from '@shared/models' | |
af971e06 C |
11 | import { AbstractCommand, OverrideCommandOptions } from '../shared' |
12 | ||
13 | export class SearchCommand extends AbstractCommand { | |
14 | ||
15 | searchChannels (options: OverrideCommandOptions & { | |
16 | search: string | |
17 | }) { | |
18 | return this.advancedChannelSearch({ | |
19 | ...options, | |
20 | ||
21 | search: { search: options.search } | |
22 | }) | |
23 | } | |
24 | ||
25 | advancedChannelSearch (options: OverrideCommandOptions & { | |
26 | search: VideoChannelsSearchQuery | |
27 | }) { | |
a1637fa1 | 28 | const { search } = options |
af971e06 C |
29 | const path = '/api/v1/search/video-channels' |
30 | ||
31 | return this.getRequestBody<ResultList<VideoChannel>>({ | |
32 | ...options, | |
33 | ||
af971e06 C |
34 | path, |
35 | query: search, | |
a1637fa1 | 36 | implicitToken: false, |
af971e06 C |
37 | defaultExpectedStatus: HttpStatusCode.OK_200 |
38 | }) | |
39 | } | |
40 | ||
41 | searchPlaylists (options: OverrideCommandOptions & { | |
42 | search: string | |
43 | }) { | |
44 | return this.advancedPlaylistSearch({ | |
45 | ...options, | |
46 | ||
47 | search: { search: options.search } | |
48 | }) | |
49 | } | |
50 | ||
51 | advancedPlaylistSearch (options: OverrideCommandOptions & { | |
52 | search: VideoPlaylistsSearchQuery | |
53 | }) { | |
a1637fa1 | 54 | const { search } = options |
af971e06 C |
55 | const path = '/api/v1/search/video-playlists' |
56 | ||
57 | return this.getRequestBody<ResultList<VideoPlaylist>>({ | |
58 | ...options, | |
59 | ||
af971e06 C |
60 | path, |
61 | query: search, | |
a1637fa1 | 62 | implicitToken: false, |
af971e06 C |
63 | defaultExpectedStatus: HttpStatusCode.OK_200 |
64 | }) | |
65 | } | |
66 | ||
67 | searchVideos (options: OverrideCommandOptions & { | |
68 | search: string | |
69 | sort?: string | |
70 | }) { | |
71 | const { search, sort } = options | |
72 | ||
73 | return this.advancedVideoSearch({ | |
74 | ...options, | |
75 | ||
76 | search: { | |
77 | search: search, | |
78 | sort: sort ?? '-publishedAt' | |
79 | } | |
80 | }) | |
81 | } | |
82 | ||
83 | advancedVideoSearch (options: OverrideCommandOptions & { | |
84 | search: VideosSearchQuery | |
85 | }) { | |
a1637fa1 | 86 | const { search } = options |
af971e06 C |
87 | const path = '/api/v1/search/videos' |
88 | ||
89 | return this.getRequestBody<ResultList<Video>>({ | |
90 | ...options, | |
91 | ||
af971e06 | 92 | path, |
5e2fea3a | 93 | query: search, |
a1637fa1 | 94 | implicitToken: false, |
af971e06 C |
95 | defaultExpectedStatus: HttpStatusCode.OK_200 |
96 | }) | |
97 | } | |
98 | } |