mod builder;
mod response;
mod types;
pub use builder::GetBroadcasterSubscriptionsBuilder;
pub use response::{BroadcasterSubscriptionResponse, UserSubscriptionResponse};
pub use types::{Subscription, Tier};
use crate::types::{
constants::{BROADCASTER_ID, SUBSCRIPTIONS, USER, USER_ID},
BroadcasterId, UserId,
};
use crate::request::TwitchAPIRequest;
use crate::TwitchAPI;
pub trait SubscriptionsAPI {
fn get_broadcaster_subscriptions<'a>(
&'a self,
broadcaster_id: &'a BroadcasterId,
) -> GetBroadcasterSubscriptionsBuilder<'a>;
fn check_user_subscription(
&self,
broadcaster_id: &BroadcasterId,
user_id: &UserId,
) -> TwitchAPIRequest<UserSubscriptionResponse>;
}
impl SubscriptionsAPI for TwitchAPI {
fn get_broadcaster_subscriptions<'a>(
&'a self,
broadcaster_id: &'a BroadcasterId,
) -> GetBroadcasterSubscriptionsBuilder<'a> {
GetBroadcasterSubscriptionsBuilder::new(self, broadcaster_id)
}
simple_endpoint!(
fn check_user_subscription(
broadcaster_id: &BroadcasterId [key = BROADCASTER_ID],
user_id: &UserId [key = USER_ID],
) -> UserSubscriptionResponse;
endpoint: CheckUserSubscriptions,
method: GET,
path: [SUBSCRIPTIONS, USER],
);
}