feat: add get_burst_credits
This commit is contained in:
parent
2f4198c0a4
commit
7e2e85988b
|
@ -15,7 +15,7 @@ use crate::{
|
||||||
instance::{ChorusUser, Instance},
|
instance::{ChorusUser, Instance},
|
||||||
ratelimiter::ChorusRequest,
|
ratelimiter::ChorusRequest,
|
||||||
types::{
|
types::{
|
||||||
AuthorizeConnectionSchema, ConnectionType, CreateUserHarvestSchema,
|
AuthorizeConnectionSchema, BurstCreditsInfo, ConnectionType, CreateUserHarvestSchema,
|
||||||
DeleteDisableUserSchema, GetPomeloEligibilityReturn, GetPomeloSuggestionsReturn,
|
DeleteDisableUserSchema, GetPomeloEligibilityReturn, GetPomeloSuggestionsReturn,
|
||||||
GetRecentMentionsSchema, GetUserProfileSchema, GuildAffinities, Harvest,
|
GetRecentMentionsSchema, GetUserProfileSchema, GuildAffinities, Harvest,
|
||||||
HarvestBackendType, LimitType, ModifyUserNoteSchema, PremiumUsage, PublicUser, Snowflake,
|
HarvestBackendType, LimitType, ModifyUserNoteSchema, PremiumUsage, PublicUser, Snowflake,
|
||||||
|
@ -640,6 +640,29 @@ impl ChorusUser {
|
||||||
|
|
||||||
chorus_request.deserialize_response(self).await
|
chorus_request.deserialize_response(self).await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Fetches info about the current user's burst credits
|
||||||
|
/// (how many are remaining, when they will replenish).
|
||||||
|
///
|
||||||
|
/// Burst credits are used to create burst reactions.
|
||||||
|
///
|
||||||
|
/// # Notes
|
||||||
|
/// As of 2024/08/18, Spacebar does not yet implement this endpoint.
|
||||||
|
pub async fn get_burst_credits(&mut self) -> ChorusResult<BurstCreditsInfo> {
|
||||||
|
let request = Client::new()
|
||||||
|
.get(format!(
|
||||||
|
"{}/users/@me/burst-credits",
|
||||||
|
self.belongs_to.read().unwrap().urls.api,
|
||||||
|
))
|
||||||
|
.header("Authorization", self.token());
|
||||||
|
|
||||||
|
let chorus_request = ChorusRequest {
|
||||||
|
request,
|
||||||
|
limit_type: LimitType::default(),
|
||||||
|
};
|
||||||
|
|
||||||
|
chorus_request.deserialize_response(self).await
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl User {
|
impl User {
|
||||||
|
|
|
@ -4,11 +4,12 @@
|
||||||
|
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use chrono::NaiveDate;
|
use chrono::{DateTime, NaiveDate, Utc};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::types::{
|
use crate::types::{
|
||||||
Connection, GuildAffinity, HarvestBackendType, Snowflake, ThemeColors, TwoWayLinkType, UserAffinity
|
Connection, GuildAffinity, HarvestBackendType, Snowflake, ThemeColors, TwoWayLinkType,
|
||||||
|
UserAffinity,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Debug, Default, Deserialize, Serialize, Clone, PartialEq, Eq)]
|
#[derive(Debug, Default, Deserialize, Serialize, Clone, PartialEq, Eq)]
|
||||||
|
@ -377,7 +378,7 @@ pub(crate) struct GetConnectionAccessTokenReturn {
|
||||||
pub access_token: String,
|
pub access_token: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
|
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, PartialOrd)]
|
||||||
/// Return type for the [crate::instance::ChorusUser::get_user_affinities] endpoint.
|
/// Return type for the [crate::instance::ChorusUser::get_user_affinities] endpoint.
|
||||||
///
|
///
|
||||||
/// See <https://docs.discord.sex/resources/user#get-user-affinities>
|
/// See <https://docs.discord.sex/resources/user#get-user-affinities>
|
||||||
|
@ -388,7 +389,7 @@ pub struct UserAffinities {
|
||||||
pub inverse_user_affinities: Vec<UserAffinity>,
|
pub inverse_user_affinities: Vec<UserAffinity>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq)]
|
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, PartialOrd)]
|
||||||
/// Return type for the [crate::instance::ChorusUser::get_guild_affinities] endpoint.
|
/// Return type for the [crate::instance::ChorusUser::get_guild_affinities] endpoint.
|
||||||
///
|
///
|
||||||
/// See <https://docs.discord.sex/resources/user#get-guild-affinities>
|
/// See <https://docs.discord.sex/resources/user#get-guild-affinities>
|
||||||
|
@ -396,7 +397,7 @@ pub struct GuildAffinities {
|
||||||
pub guild_affinities: Vec<GuildAffinity>,
|
pub guild_affinities: Vec<GuildAffinity>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Eq)]
|
#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Eq, PartialOrd, Ord)]
|
||||||
/// Return type for the error in the [crate::instance::ChorusUser::create_domain_connection] endpoint.
|
/// Return type for the error in the [crate::instance::ChorusUser::create_domain_connection] endpoint.
|
||||||
///
|
///
|
||||||
/// This allows us to retrieve the needed proof for actually verifying the connection.
|
/// This allows us to retrieve the needed proof for actually verifying the connection.
|
||||||
|
@ -433,5 +434,24 @@ pub enum CreateDomainConnectionReturn {
|
||||||
/// The domain connection was successfully created, no further action is needed.
|
/// The domain connection was successfully created, no further action is needed.
|
||||||
///
|
///
|
||||||
/// The inner object is the new connection.
|
/// The inner object is the new connection.
|
||||||
Ok(Connection)
|
Ok(Connection),
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
|
||||||
|
/// Return type for the [crate::instance::ChorusUser::get_burst_credits] endpoint.
|
||||||
|
///
|
||||||
|
/// # Reference
|
||||||
|
/// ```json
|
||||||
|
/// {
|
||||||
|
/// "amount": 2,
|
||||||
|
/// "replenished_today": false,
|
||||||
|
/// "next_replenish_at": "2024-08-18T23:53:17+00:00"
|
||||||
|
/// }
|
||||||
|
/// ```
|
||||||
|
pub struct BurstCreditsInfo {
|
||||||
|
/// Amount of remaining burst credits the local user has
|
||||||
|
pub amount: u16,
|
||||||
|
pub replenished_today: bool,
|
||||||
|
/// When the user's burst credits will automatically replenish again
|
||||||
|
pub next_replenish_at: DateTime<Utc>,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue