use super::*;
use helix::RequestGet;
#[derive(PartialEq, typed_builder::TypedBuilder, Deserialize, Serialize, Clone, Debug)]
#[non_exhaustive]
pub struct GetUsersRequest {
#[builder(default)]
pub id: Vec<types::UserId>,
#[builder(default)]
pub login: Vec<types::UserName>,
}
#[derive(PartialEq, Deserialize, Serialize, Debug, Clone)]
#[cfg_attr(feature = "deny_unknown_fields", serde(deny_unknown_fields))]
#[non_exhaustive]
pub struct User {
pub broadcaster_type: Option<types::BroadcasterType>,
pub created_at: types::Timestamp,
pub description: Option<String>,
pub display_name: types::DisplayName,
pub email: Option<String>,
pub id: types::UserId,
pub login: types::UserName,
pub offline_image_url: Option<String>,
pub profile_image_url: Option<String>,
#[serde(rename = "type")]
pub type_: Option<types::UserType>,
pub view_count: usize,
}
impl Request for GetUsersRequest {
type Response = Vec<User>;
#[cfg(feature = "twitch_oauth2")]
const OPT_SCOPE: &'static [twitch_oauth2::Scope] = &[twitch_oauth2::Scope::UserReadEmail];
const PATH: &'static str = "users";
#[cfg(feature = "twitch_oauth2")]
const SCOPE: &'static [twitch_oauth2::Scope] = &[];
}
impl RequestGet for GetUsersRequest {}
#[cfg(test)]
#[test]
fn test_request() {
use helix::*;
let req = GetUsersRequest::builder()
.id(vec!["44322889".into()])
.build();
let data = br#"
{
"data": [
{
"id": "141981764",
"login": "twitchdev",
"display_name": "TwitchDev",
"type": "",
"broadcaster_type": "partner",
"description": "Supporting third-party developers building Twitch integrations from chatbots to game integrations.",
"profile_image_url": "https://static-cdn.jtvnw.net/jtv_user_pictures/8a6381c7-d0c0-4576-b179-38bd5ce1d6af-profile_image-300x300.png",
"offline_image_url": "https://static-cdn.jtvnw.net/jtv_user_pictures/3f13ab61-ec78-4fe6-8481-8682cb3b0ac2-channel_offline_image-1920x1080.png",
"view_count": 5980557,
"email": "not-real@email.com",
"created_at": "2016-12-14T20:32:28.894263Z"
}
]
}
"#
.to_vec();
let http_response = http::Response::builder().body(data).unwrap();
let uri = req.get_uri().unwrap();
assert_eq!(
uri.to_string(),
"https://api.twitch.tv/helix/users?id=44322889"
);
dbg!(GetUsersRequest::parse_response(Some(req), &uri, http_response).unwrap());
}