twitch_highway 0.0.6

Twitch Api reqest Http
Documentation
use asknothingx2_util::oauth::{AccessToken, ClientId};
use badges::BadgeAPI;
use emotes::EmoteAPI;
use get_chat_setting::GetChatSetting;
use get_chatters::GetChatters;
use get_shared_chat_session::GetSharedChatSession;
use send_chat_message::SendChatMessage;

pub mod badges;
pub mod emotes;
pub mod get_chat_setting;
pub mod get_chatters;
pub mod get_shared_chat_session;
pub mod send_chat_message;

#[derive(Debug)]
pub struct ChatAPI {
    access_token: AccessToken,
    client_id: ClientId,
}

impl ChatAPI {
    pub fn new(access_token: AccessToken, client_id: ClientId) -> Self {
        Self {
            access_token,
            client_id,
        }
    }

    pub fn emotes(&self) -> EmoteAPI {
        EmoteAPI::new(self.access_token.clone(), self.client_id.clone())
    }

    pub fn badges(&self) -> BadgeAPI {
        BadgeAPI::new(self.access_token.clone(), self.client_id.clone())
    }

    pub fn get_chatters<T: Into<String>>(&self, broadcaster_id: T, moderator_id: T) -> GetChatters {
        GetChatters::new(
            self.access_token.clone(),
            self.client_id.clone(),
            broadcaster_id.into(),
            moderator_id.into(),
        )
    }

    pub fn get_chat_settings<T: Into<String>>(&self, broadcaster_id: T) -> GetChatSetting {
        GetChatSetting::new(
            self.access_token.clone(),
            self.client_id.clone(),
            broadcaster_id.into(),
        )
    }

    pub fn get_shared_chat_session<T: Into<String>>(
        &self,
        broadcaster_id: T,
    ) -> GetSharedChatSession {
        GetSharedChatSession::new(
            self.access_token.clone(),
            self.client_id.clone(),
            broadcaster_id.into(),
        )
    }

    pub fn send_chat_message<T: Into<String>>(
        &self,
        broadcaster_id: T,
        sender_id: T,
    ) -> SendChatMessage {
        SendChatMessage::new(
            self.access_token.clone(),
            self.client_id.clone(),
            broadcaster_id.into(),
            sender_id.into(),
        )
    }
}