use crate::{Error, Payload, Result};
use reqwest::{blocking::Client, Url};
#[derive(Debug, Clone)]
pub struct Slack {
hook: Url,
client: Client,
}
impl Slack {
pub fn new<T: reqwest::IntoUrl>(hook: T) -> Result<Slack> {
Ok(Slack {
hook: hook.into_url()?,
client: Client::new(),
})
}
pub fn send(&self, payload: &Payload) -> Result<()> {
let response = self.client.post(self.hook.clone()).json(payload).send()?;
if response.status().is_success() {
Ok(())
} else {
Err(Error::Slack(format!("HTTP error {}", response.status())))
}
}
}