1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use std::error::Error;
use serde::Serialize;
use crate::error::MessageSendError;

pub fn post_as_json_to<T: Serialize>(url: &str, payload: &T) -> Result<(), Box<dyn Error>> {
    let response = minreq::post(url)
        .with_json(payload)?
        .with_header("Accept", "application/json")
        .send()?;
    let code = response.status_code;
    if code != 200 && code != 204 {
        let response = response.as_str()?;
        return Err(Box::new(MessageSendError::new(format!("Got response code {}: Response body: {}", code, response))));
    }
    Ok(())
}