pub mod request;
pub mod response;
pub mod types;
use request::BitsLeaderboardRequest;
use response::{BitsLeaderboardResponse, CheermotesResponse, ExtensionTransactionsResponse};
use crate::{
types::{
constants::{BITS, BROADCASTER_ID, EXTENSIONS, EXTENSION_ID, ID},
BroadcasterId, ExtensionId, Id, PaginationQuery,
},
};
endpoints! {
BitsAPI {
fn get_bits_leaderboard(
&self,
opts: Option<BitsLeaderboardRequest>,
) -> BitsLeaderboardResponse {
endpoint_type: GetBitsLeaderboard,
method: GET,
path: [BITS, "leaderboard"],
query_params: {
opt_into_query(opts)
}
}
fn get_cheermotes(
&self,
broadcaster_id: Option<&BroadcasterId>,
) -> CheermotesResponse {
endpoint_type: GetCheermotes,
method: GET,
path: [BITS, "cheermotes"],
query_params: {
opt(BROADCASTER_ID, broadcaster_id)
}
}
fn get_extension_transactions(
&self,
extension_id: &ExtensionId,
id: Option<&Id>,
pagination: Option<PaginationQuery>,
) -> ExtensionTransactionsResponse {
endpoint_type: GetExtensionTransactions,
method: GET,
path: [EXTENSIONS, "transactions"],
query_params: {
query(EXTENSION_ID, extension_id),
opt(ID, id),
pagination(pagination)
}
}
}
}
#[cfg(test)]
mod tests {
use crate::{
bits::{request::BitsLeaderboardRequest, BitsAPI},
types::{BroadcasterId, ExtensionId},
};
api_test!(
get_bits_leaderboard,
[Some(
BitsLeaderboardRequest::new()
.count(2)
.period("week")
.started_at(&"2018-02-05T08:00:00Z".parse().unwrap())
)]
);
api_test!(get_cheermotes, [Some(&BroadcasterId::from("41245072"))]);
api_test!(
get_extension_transactions,
[&ExtensionId::from("1234"), None, None]
);
api_test!(extra
get_cheermotes,
get_cheermotes2,
[Some(&BroadcasterId::from("41245072"))]);
}