pub mod response;
pub mod types;
use response::{BroadcasterSubscriptionResponse, UserSubscriptionResponse};
use crate::types::{
constants::{BROADCASTER_ID, SUBSCRIPTIONS, USER_ID},
BroadcasterId, PaginationQuery, UserId,
};
endpoints! {
SubscriptionsAPI {
fn get_broadcaster_subscriptions(
&self,
broadcaster_id: &BroadcasterId,
user_id: Option<&[UserId]>,
pagination: Option<PaginationQuery>,
) -> BroadcasterSubscriptionResponse {
endpoint_type: GetBroadcasterSubscriptions,
method: GET,
path: [SUBSCRIPTIONS],
query_params: {
query(BROADCASTER_ID, broadcaster_id),
extend(user_id.unwrap_or(&[]).iter().map(|id| (USER_ID, id))),
pagination(pagination)
}
}
fn check_user_subscription(
&self,
broadcaster_id: &BroadcasterId,
user_id: &UserId,
) -> UserSubscriptionResponse {
endpoint_type: CheckUserSubscriptions,
method: GET,
path: [SUBSCRIPTIONS, "user"],
query_params: {
query(BROADCASTER_ID, broadcaster_id),
query(USER_ID, user_id)
}
}
}
}
#[cfg(test)]
mod tests {
use crate::{
subscriptions::SubscriptionsAPI,
types::{BroadcasterId, UserId},
};
api_test!(
get_broadcaster_subscriptions,
[&BroadcasterId::from("141981764"), None, None]
);
api_test!(
check_user_subscription,
[
&BroadcasterId::from("149747285"),
&UserId::from("141981764")
]
);
}