use asknothingx2_util::serde::serialize_none_as_empty_string;
use chrono::{DateTime, FixedOffset};
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
pub struct User {
pub id: String,
pub login: String,
pub display_name: String,
#[serde(rename = "type")]
pub kind: GetUserType,
pub broadcaster_type: BroadcasterType,
pub description: String,
pub profile_image_url: String,
pub offline_image_url: String,
pub view_count: u64,
#[serde(serialize_with = "serialize_none_as_empty_string")]
pub email: Option<String>,
pub created_at: DateTime<FixedOffset>,
}
#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum GetUserType {
Admin,
GlobalMod,
Staff,
#[serde(rename(serialize = "", deserialize = ""))]
Normal,
}
#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum BroadcasterType {
Affiliate,
Partner,
#[serde(rename(serialize = "", deserialize = ""))]
Normal,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct BlockUser {
user_id: String,
user_login: String,
display_name: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct UserExtension {
id: String,
version: String,
name: String,
can_activate: bool,
#[serde(rename = "type")]
kind: Vec<ExtensionType>,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum ExtensionType {
Component,
Mobile,
Overlay,
Panel,
}