tongbal_api/category/
mod.rs1mod 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 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}