twitch_highway 0.3.0

Twitch API
Documentation
use chrono::{DateTime, Utc};

use crate::{
    analytics::{AnalyticsType, ExtensionAnalyticsResponse, GameAnalyticsResponse},
    types::{
        constants::{
            AFTER, ANALYTICS, ENDED_AT, EXTENSIONS, EXTENSION_ID, FIRST, GAMES, GAME_ID,
            STARTED_AT, TYPE,
        },
        ExtensionId, GameId,
    },
};

define_request_builder! {
    #[derive(Debug)]
    GetExtensionBuilder<'a> {
        extension_id: &'a ExtensionId [key = EXTENSION_ID],
        kind: AnalyticsType [key = TYPE, convert = as_ref],
        started_at: &'a DateTime<Utc> [key = STARTED_AT, convert = rfc3339_opt],
        ended_at: &'a DateTime<Utc> [key = ENDED_AT, convert = rfc3339_opt],
        first: u8 [key = FIRST, convert = to_string],
        after: &'a str [key = AFTER]
    } -> ExtensionAnalyticsResponse;
    endpoint_type: GetExtensionAnalytics,
    method: GET,
    path: [ANALYTICS, EXTENSIONS],
}

define_request_builder! {
    #[derive(Debug)]
    GetGameAnalyticsBuilder<'a> {
        game_id: &'a GameId [key = GAME_ID],
        kind: AnalyticsType [key = TYPE, convert = as_ref],
        started_at: &'a DateTime<Utc> [key = STARTED_AT, convert = rfc3339_opt],
        ended_at: &'a DateTime<Utc> [key = ENDED_AT, convert = rfc3339_opt],
        first: u8 [key = FIRST, convert = to_string],
        after: &'a str [key = AFTER]
    } -> GameAnalyticsResponse;
    endpoint_type: GetGameAnalytics,
    method: GET,
    path: [ANALYTICS, GAMES],
}