twitch_highway 0.2.1

Twitch API
Documentation
pub mod response;
pub mod types;

use response::{CharityCampaignDonationResponse, CharityCampaignResponse};

use crate::types::{constants::BROADCASTER_ID, BroadcasterId, PaginationQuery};

const CHARITY: &str = "charity";

endpoints! {
    CharityAPI {
        /// <https://dev.twitch.tv/docs/api/reference/#get-charity-campaign>
        fn get_charity_campaign(
            &self,
            broadcaster_id: &BroadcasterId,
        ) -> CharityCampaignResponse {
            endpoint_type: GetCharityCampaign,
            method: GET,
            path: [CHARITY, "campaigns"],
            query_params: {
                query(BROADCASTER_ID, broadcaster_id)
            }
        }

        /// <https://dev.twitch.tv/docs/api/reference/#get-charity-campaign-donations>
        fn get_charity_campaign_donations(
            &self,
            broadcaster_id: &BroadcasterId,
            pagination: Option<PaginationQuery>,
        ) -> CharityCampaignDonationResponse {
            endpoint_type: GetCharityCampaignDonations,
            method: GET,
            path: [CHARITY, "donations"],
            query_params: {
                query(BROADCASTER_ID, broadcaster_id),
                pagination(pagination)
            }
        }
    }
}

#[cfg(test)]
mod tests {
    use crate::{charity::CharityAPI, types::BroadcasterId};

    api_test!(get_charity_campaign, [&BroadcasterId::from("123456")]);

    api_test!(
        get_charity_campaign_donations,
        [&BroadcasterId::from("123456"), None]
    );
}