twitch_highway 0.5.2

Twitch API
Documentation
use serde::{Deserialize, Serialize};
use url::Url;

use crate::types::{DateRange, ExtensionId, GameId};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExtensionAnalytic {
    pub extension_id: ExtensionId,
    #[serde(rename = "URL")]
    pub url: Url,
    #[serde(rename = "type")]
    pub kind: String,
    pub date_range: DateRange,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GameAnalytic {
    pub game_id: GameId,
    #[serde(rename = "URL")]
    pub url: Url,
    #[serde(rename = "type")]
    pub kind: String,
    pub date_range: DateRange,
}

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize)]
pub enum AnalyticsType {
    #[serde(rename = "overview_v2")]
    OverviewV2,
}

impl AnalyticsType {
    pub fn as_str(&self) -> &str {
        match self {
            Self::OverviewV2 => "overview_v2",
        }
    }
}

impl From<AnalyticsType> for String {
    fn from(value: AnalyticsType) -> Self {
        value.as_str().to_string()
    }
}

impl AsRef<str> for AnalyticsType {
    fn as_ref(&self) -> &str {
        self.as_str()
    }
}