use crate::api::{ChannelsApi, ChatApi, EventsApi, LivestreamsApi, ModerationApi, RewardsApi, UsersApi};
const KICK_BASE_URL: &str = "https://api.kick.com/public/v1";
#[derive(Debug, Clone)]
pub struct KickApiClient {
base_url: String,
client: reqwest::Client,
oauth_token: Option<String>,
}
impl KickApiClient {
pub fn new() -> Self {
KickApiClient {
base_url: KICK_BASE_URL.to_string(),
client: reqwest::Client::new(),
oauth_token: None,
}
}
pub fn with_token(token: String) -> Self {
KickApiClient {
base_url: KICK_BASE_URL.to_string(),
client: reqwest::Client::new(),
oauth_token: Some(token),
}
}
pub fn channels(&self) -> ChannelsApi<'_> {
ChannelsApi::new(&self.client, &self.oauth_token, &self.base_url)
}
pub fn rewards(&self) -> RewardsApi<'_> {
RewardsApi::new(&self.client, &self.oauth_token, &self.base_url)
}
pub fn users(&self) -> UsersApi<'_> {
UsersApi::new(&self.client, &self.oauth_token, &self.base_url)
}
pub fn chat(&self) -> ChatApi<'_> {
ChatApi::new(&self.client, &self.oauth_token, &self.base_url)
}
pub fn moderation(&self) -> ModerationApi<'_> {
ModerationApi::new(&self.client, &self.oauth_token, &self.base_url)
}
pub fn livestreams(&self) -> LivestreamsApi<'_> {
LivestreamsApi::new(&self.client, &self.oauth_token, &self.base_url)
}
pub fn events(&self) -> EventsApi<'_> {
EventsApi::new(&self.client, &self.oauth_token, &self.base_url)
}
}
impl Default for KickApiClient {
fn default() -> Self {
Self::new()
}
}