use super::{BuildpackInstallation, Update};
use crate::framework::endpoint::{HerokuEndpoint, Method};
pub struct BuildpackInstallationUpdate<'a> {
pub app_id: &'a str,
pub params: BuildpackInstallationUpdateParams,
}
#[cfg(feature = "builder")]
impl<'a> BuildpackInstallationUpdate<'a> {
pub fn new(app_id: &'a str, buildpacks: Vec<&'a str>) -> BuildpackInstallationUpdate<'a> {
let mut updates = Vec::new();
for var in buildpacks {
updates.push(Update {
buildpack: var.to_owned(),
});
}
BuildpackInstallationUpdate {
app_id,
params: BuildpackInstallationUpdateParams { updates },
}
}
}
#[derive(Serialize, Clone, Debug)]
pub struct BuildpackInstallationUpdateParams {
pub updates: Vec<Update>,
}
impl<'a> HerokuEndpoint<Vec<BuildpackInstallation>, (), BuildpackInstallationUpdateParams>
for BuildpackInstallationUpdate<'a>
{
fn method(&self) -> Method {
Method::Put
}
fn path(&self) -> String {
format!("apps/{}/buildpack-installations", self.app_id)
}
fn body(&self) -> Option<BuildpackInstallationUpdateParams> {
Some(self.params.clone())
}
}