twitter_v2/api/
spaces.rs

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}