1use super::TwitterApi;
2use crate::authorization::Authorization;
3use crate::data::{Space, Tweet, User};
4use crate::id::{IntoNumericId, IntoStringId};
5use crate::meta::SimpleResultCountMeta;
6use crate::query::{
7 GetRelatedTweetsRequestBuilder, GetRelatedUsersRequestBuilder, GetSpacesRequestBuilder,
8 GetSpacesSearchRequestBuilder, UrlQueryExt,
9};
10use crate::utils::url;
11
12impl<A> TwitterApi<A>
13where
14 A: Authorization,
15{
16 pub fn get_spaces(
17 &self,
18 ids: impl IntoIterator<Item = impl IntoStringId>,
19 ) -> GetSpacesRequestBuilder<A, Vec<Space>, ()> {
20 let mut url = self.url("spaces").unwrap();
21 url.append_query_seq("ids", ids);
22 GetSpacesRequestBuilder::new(self, url)
23 }
24 pub fn get_space(&self, id: impl IntoStringId) -> GetSpacesRequestBuilder<A, Space, ()> {
25 GetSpacesRequestBuilder::new(self, self.url(url!("spaces/{}", id)).unwrap())
26 }
27 pub fn get_spaces_by_creator_ids(
28 &self,
29 user_ids: impl IntoIterator<Item = impl IntoNumericId>,
30 ) -> GetSpacesRequestBuilder<A, Vec<Space>, SimpleResultCountMeta> {
31 let mut url = self.url("spaces/by/creator_ids").unwrap();
32 url.append_query_seq("user_ids", user_ids);
33 GetSpacesRequestBuilder::new(self, url)
34 }
35 pub fn get_space_buyers(
36 &self,
37 id: impl IntoStringId,
38 ) -> GetRelatedUsersRequestBuilder<A, Vec<User>, ()> {
39 GetRelatedUsersRequestBuilder::new(self, self.url(url!("spaces/{}/buyers", id)).unwrap())
40 }
41 pub fn get_space_tweets(
42 &self,
43 id: impl IntoStringId,
44 ) -> GetRelatedTweetsRequestBuilder<A, Vec<Tweet>, ()> {
45 GetRelatedTweetsRequestBuilder::new(self, self.url(url!("spaces/{}/tweets", id)).unwrap())
46 }
47 pub fn get_spaces_search(
48 &self,
49 query: impl ToString,
50 ) -> GetSpacesSearchRequestBuilder<A, Vec<Space>, SimpleResultCountMeta> {
51 let mut url = self.url("spaces/search").unwrap();
52 url.append_query_val("query", query);
53 GetSpacesSearchRequestBuilder::new(self, url)
54 }
55}