use super::{LogDrain, LogSession};
use crate::framework::endpoint::{HerokuEndpoint, Method};
pub struct LogDrainCreate<'a> {
pub app_id: &'a str,
pub params: LogDrainCreateParams<'a>,
}
#[cfg(feature = "builder")]
impl<'a> LogDrainCreate<'a> {
pub fn new(app_id: &'a str, url: &'a str) -> LogDrainCreate<'a> {
LogDrainCreate {
app_id,
params: LogDrainCreateParams { url },
}
}
}
#[derive(Serialize, Clone, Debug)]
pub struct LogDrainCreateParams<'a> {
pub url: &'a str,
}
impl<'a> HerokuEndpoint<LogDrain, (), LogDrainCreateParams<'a>> for LogDrainCreate<'a> {
fn method(&self) -> Method {
Method::Post
}
fn path(&self) -> String {
format!("apps/{}/log-drains", self.app_id)
}
fn body(&self) -> Option<LogDrainCreateParams<'a>> {
Some(self.params.clone())
}
}
pub struct LogSessionCreate<'a> {
pub app_id: &'a str,
pub params: LogSessionCreateParams<'a>,
}
#[cfg(feature = "builder")]
impl<'a> LogSessionCreate<'a> {
pub fn new(app_id: &'a str) -> LogSessionCreate<'a> {
LogSessionCreate {
app_id,
params: LogSessionCreateParams {
dyno: None,
lines: None,
source: None,
tail: None,
},
}
}
pub fn dyno(&mut self, dyno: &'a str) -> &mut Self {
self.params.dyno = Some(dyno);
self
}
pub fn lines(&mut self, lines: i64) -> &mut Self {
self.params.lines = Some(lines);
self
}
pub fn source(&mut self, source: &'a str) -> &mut Self {
self.params.source = Some(source);
self
}
pub fn tail(&mut self, tail: bool) -> &mut Self {
self.params.tail = Some(tail);
self
}
pub fn build(&self) -> LogSessionCreate<'a> {
LogSessionCreate {
app_id: self.app_id,
params: LogSessionCreateParams {
dyno: self.params.dyno,
lines: self.params.lines,
source: self.params.source,
tail: self.params.tail,
},
}
}
}
#[derive(Serialize, Clone, Debug)]
pub struct LogSessionCreateParams<'a> {
pub dyno: Option<&'a str>,
pub lines: Option<i64>,
pub source: Option<&'a str>,
pub tail: Option<bool>,
}
impl<'a> HerokuEndpoint<LogSession, (), LogSessionCreateParams<'a>> for LogSessionCreate<'a> {
fn method(&self) -> Method {
Method::Post
}
fn path(&self) -> String {
format!("apps/{}/log-sessions", self.app_id)
}
fn body(&self) -> Option<LogSessionCreateParams<'a>> {
Some(self.params.clone())
}
}