use super::{Team, TeamApp, TeamMember, TeamPreferences};
use crate::framework::endpoint::{HerokuEndpoint, Method};
pub struct TeamUpdate<'a> {
pub team_id: &'a str,
pub params: TeamUpdateParams<'a>,
}
#[cfg(feature = "builder")]
impl<'a> TeamUpdate<'a> {
pub fn new(team_id: &'a str) -> TeamUpdate<'a> {
TeamUpdate {
team_id,
params: TeamUpdateParams {
default: None,
name: None,
},
}
}
pub fn default(&mut self, default: bool) -> &mut Self {
self.params.default = Some(default);
self
}
pub fn name(&mut self, name: &'a str) -> &mut Self {
self.params.name = Some(name);
self
}
pub fn build(&self) -> TeamUpdate<'a> {
TeamUpdate {
team_id: self.team_id,
params: TeamUpdateParams {
default: self.params.default,
name: self.params.name,
},
}
}
}
#[serde_with::skip_serializing_none]
#[derive(Serialize, Clone, Debug)]
pub struct TeamUpdateParams<'a> {
pub default: Option<bool>,
pub name: Option<&'a str>,
}
impl<'a> HerokuEndpoint<Team, (), TeamUpdateParams<'a>> for TeamUpdate<'a> {
fn method(&self) -> Method {
Method::Patch
}
fn path(&self) -> String {
format!("teams/{}", self.team_id)
}
fn body(&self) -> Option<TeamUpdateParams<'a>> {
Some(self.params.clone())
}
}
pub struct TeamAppUpdateLocked<'a> {
pub team_id: &'a str,
pub params: TeamAppUpdateLockedParams,
}
#[cfg(feature = "builder")]
impl<'a> TeamAppUpdateLocked<'a> {
pub fn new(team_id: &'a str, locked: bool) -> TeamAppUpdateLocked<'a> {
TeamAppUpdateLocked {
team_id,
params: TeamAppUpdateLockedParams { locked },
}
}
}
#[derive(Serialize, Clone, Debug)]
pub struct TeamAppUpdateLockedParams {
pub locked: bool,
}
impl<'a> HerokuEndpoint<Team, (), TeamAppUpdateLockedParams> for TeamAppUpdateLocked<'a> {
fn method(&self) -> Method {
Method::Patch
}
fn path(&self) -> String {
format!("teams/apps/{}", self.team_id)
}
fn body(&self) -> Option<TeamAppUpdateLockedParams> {
Some(self.params.clone())
}
}
pub struct TeamAppTransfer<'a> {
pub team_id: &'a str,
pub params: TeamAppTransferParams<'a>,
}
#[cfg(feature = "builder")]
impl<'a> TeamAppTransfer<'a> {
pub fn new(team_id: &'a str, owner_id: &'a str) -> TeamAppTransfer<'a> {
TeamAppTransfer {
team_id: team_id,
params: TeamAppTransferParams { owner: owner_id },
}
}
}
#[derive(Serialize, Clone, Debug)]
pub struct TeamAppTransferParams<'a> {
pub owner: &'a str,
}
impl<'a> HerokuEndpoint<TeamApp, (), TeamAppTransferParams<'a>> for TeamAppTransfer<'a> {
fn method(&self) -> Method {
Method::Patch
}
fn path(&self) -> String {
format!("teams/apps/{}", self.team_id)
}
fn body(&self) -> Option<TeamAppTransferParams<'a>> {
Some(self.params.clone())
}
}
pub struct TeamMemberUpdate<'a> {
pub team_id: &'a str,
pub params: TeamMemberUpdateParams<'a>,
}
#[cfg(feature = "builder")]
impl<'a> TeamMemberUpdate<'a> {
pub fn new(team_id: &'a str, email: &'a str, role: &'a str) -> TeamMemberUpdate<'a> {
TeamMemberUpdate {
team_id,
params: TeamMemberUpdateParams {
email: email,
role: role,
federated: None,
},
}
}
pub fn federated(&mut self, federated: bool) -> &mut Self {
self.params.federated = Some(federated);
self
}
pub fn build(&self) -> TeamMemberUpdate<'a> {
TeamMemberUpdate {
team_id: self.team_id,
params: TeamMemberUpdateParams {
email: self.params.email,
role: self.params.role,
federated: self.params.federated,
},
}
}
}
#[serde_with::skip_serializing_none]
#[derive(Serialize, Clone, Debug)]
pub struct TeamMemberUpdateParams<'a> {
pub email: &'a str,
pub role: &'a str,
pub federated: Option<bool>,
}
impl<'a> HerokuEndpoint<TeamMember, (), TeamMemberUpdateParams<'a>> for TeamMemberUpdate<'a> {
fn method(&self) -> Method {
Method::Patch
}
fn path(&self) -> String {
format!("teams/{}/members", self.team_id)
}
fn body(&self) -> Option<TeamMemberUpdateParams<'a>> {
Some(self.params.clone())
}
}
pub struct TeamPreferenceUpdate<'a> {
pub id: &'a str,
pub params: TeamPreferenceUpdateParams,
}
#[cfg(feature = "builder")]
impl<'a> TeamPreferenceUpdate<'a> {
pub fn new(id: &'a str) -> TeamPreferenceUpdate<'a> {
TeamPreferenceUpdate {
id,
params: TeamPreferenceUpdateParams {
whitelisting_enabled: None,
},
}
}
pub fn whitelisting_enabled(&mut self, whitelisting_enabled: bool) -> &mut Self {
self.params.whitelisting_enabled = Some(whitelisting_enabled);
self
}
pub fn build(&self) -> TeamPreferenceUpdate<'a> {
TeamPreferenceUpdate {
id: self.id,
params: TeamPreferenceUpdateParams {
whitelisting_enabled: self.params.whitelisting_enabled,
},
}
}
}
#[derive(Serialize, Clone, Debug)]
pub struct TeamPreferenceUpdateParams {
#[serde(rename = "whitelisting-enabled")]
pub whitelisting_enabled: Option<bool>,
}
impl<'a> HerokuEndpoint<TeamPreferences, (), TeamPreferenceUpdateParams> for TeamPreferenceUpdate<'a> {
fn method(&self) -> Method {
Method::Patch
}
fn path(&self) -> String {
format!("teams/{}/preferences", self.id)
}
fn body(&self) -> Option<TeamPreferenceUpdateParams> {
Some(self.params.clone())
}
}