twitter_api_v2/endpoints/users/
lookup.rs1use serde::{Deserialize, Serialize};
4
5use crate::objects::User;
6
7pub fn url_for_user_by_id(id: u64) -> String {
12 format!("https://api.twitter.com/2/users/{id}")
13}
14
15pub fn url_for_user_by_username(username: impl AsRef<str>) -> String {
16 let username = username.as_ref();
17 format!("https://api.twitter.com/2/users/by/username/{username}")
18}
19
20#[derive(Deserialize, Serialize, Debug, Clone)]
22pub struct SingleUserResponseBody {
23 pub data: User,
24}
25
26#[derive(Deserialize, Serialize, Debug, Clone)]
27pub struct MultipleUsersResponseBody {
28 pub data: Vec<User>,
29}
30
31#[cfg(test)]
32mod tests {
33 use super::*;
34
35 #[test]
36 fn test_de_response_body() {
37 match serde_json::from_str::<SingleUserResponseBody>(include_str!(
38 "../../../tests/response_body_json_files/users__lookup__me__default_fields.json"
39 )) {
40 Ok(body) => {
41 assert_eq!(body.data.id.unwrap(), 2244994945);
42 }
43 Err(err) => panic!("{err}"),
44 }
45
46 match serde_json::from_str::<SingleUserResponseBody>(include_str!(
47 "../../../tests/response_body_json_files/users__lookup__me__optional_fields.json"
48 )) {
49 Ok(body) => {
50 println!("{body:?}");
51 assert_eq!(body.data.id.unwrap(), 2244994945);
52 }
53 Err(err) => panic!("{err}"),
54 }
55 }
56}