Skip to main content

tongbal_api/category/
mod.rs

1mod response;
2
3pub use response::CategoryResponse;
4
5use std::future::Future;
6
7use crate::{
8    AppClient, BaseClient, Error, Response,
9    types::constants::{CATEGORIES, QUERY, SEARCH, SIZE},
10};
11
12pub trait CategoryAPI: BaseClient {
13    /// See <https://chzzk.gitbook.io/chzzk/chzzk-api/category>
14    fn search_category(
15        &self,
16        query: &str,
17        size: Option<usize>,
18    ) -> impl Future<Output = Result<Response<CategoryResponse>, Error>> + Send;
19}
20
21impl CategoryAPI for AppClient {
22    async fn search_category(
23        &self,
24        query: &str,
25        size: Option<usize>,
26    ) -> Result<Response<CategoryResponse>, Error> {
27        let mut url = self.base_url();
28
29        url.path_segments_mut()
30            .unwrap()
31            .extend([CATEGORIES, SEARCH]);
32
33        url.query_pairs_mut().append_pair(QUERY, query);
34        if let Some(size) = size {
35            url.query_pairs_mut().append_pair(SIZE, &size.to_string());
36        }
37
38        crate::client::json(self.http_client().get(url)).await
39    }
40}